• N-FX2-4 移动链表节点


    给定带有表头结点的单向链表,编写一个函数,将链表中偶数序号的数据节点移到链尾。

    链表节点的结构定义:

    typedef struct numLink

    {

    int no;

    struct numLink *next;

    }NODE;

    所编写函数的原型:void movenode( NODE *head)

    其中:参数head 是单向链表的头指针。

     

    输入:节点数目

    输出:处理后的结果

    说明:仅提交函数 void movenode( NODE *head) 即可。

    预设代码

    前置代码

    view plainprint?

    1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */  
    2. #include <stdio.h>  
    3. #include <stdlib.h>  
    4.   
    5. typedef struct numLink  
    6. {  
    7.     int no;  
    8.     struct numLink *next;  
    9. }NODE;  
    10.   
    11. void movenode( NODE *head);  
    12.   
    13. void SetLink( NODE *h, int n )  
    14. {  
    15.     NODE *p=NULL, *q=NULL;  
    16.     int i;  
    17.     for( i=0; i<n; i++)  
    18.     {  
    19.         p = (NODE *)malloc(sizeof(NODE));  
    20.         p->no = i+1;  
    21.         p->next = NULL;  
    22.         if( h->next == NULL )  
    23.         {  
    24.             h->next = p;  
    25.             q = p;  
    26.         }  
    27.         else  
    28.         {  
    29.             q->next = p;  
    30.             q = q->next;  
    31.         }  
    32.     }  
    33.     return;  
    34. }  
    35.   
    36. int main( )  
    37. {  
    38.     int n;  
    39.     NODE *head=NULL, *q=NULL;  
    40.     scanf("%d",&n);  
    41.   
    42.     head = (NODE *)malloc(sizeof(NODE));  
    43.     head->no = -1;  
    44.     head->next = NULL;  
    45.   
    46.     SetLink( head, n );  
    47.     movenode( head );  
    48.   
    49.     q = head;  
    50.     while (q->next){  
    51.         printf("%d ",q->next->no);  
    52.         q = q->next;  
    53.     }   
    54.     printf("\n");  
    55.       
    56.     system("pause");  
    57.     return 0;  
    58. }  
    59.   
    60. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */  
      1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
      2. #include <stdio.h>
      3. #include <stdlib.h>
      4. typedef struct numLink
      5. {
      6. int no;
      7. struct numLink *next;
      8. } NODE;
      9. void movenode( NODE *head)
      10. {
      11. NODE *p, *q, *last;
      12. p = head->next;
      13. last = head;
      14. int count = 0;
      15. while (last->next != NULL)
      16. {
      17. last = last->next;
      18. count ++;
      19. }
      20. for(int i=0;i < count/2 && count != 2; i ++)
      21. {
      22. q = p->next;
      23. if (q->no % 2 == 0 )
      24. {
      25. p->next = q->next;
      26. q->next = NULL;
      27. last->next = q;
      28. last = last->next;
      29. }
      30. p = p->next;
      31. }
      32. }
      33. void SetLink( NODE *h, int n )
      34. {
      35. NODE *p = NULL, *q = NULL;
      36. int i;
      37. for ( i = 0; i < n; i++)
      38. {
      39. p = (NODE *)malloc(sizeof(NODE));
      40. p->no = i + 1;
      41. p->next = NULL;
      42. if ( h->next == NULL )
      43. {
      44. h->next = p;
      45. q = p;
      46. }
      47. else
      48. {
      49. q->next = p;
      50. q = q->next;
      51. }
      52. }
      53. return;
      54. }
      55. int main( )
      56. {
      57. int n;
      58. NODE *head = NULL, *q = NULL;
      59. scanf("%d", &n);
      60. head = (NODE *)malloc(sizeof(NODE));
      61. head->no = -1;
      62. head->next = NULL;
      63. SetLink( head, n );
      64. movenode( head );
      65. q = head;
      66. while (q->next)
      67. {
      68. printf("%d ", q->next->no);
      69. q = q->next;
      70. }
      71. printf("\n");
      72. system("pause");
      73. return 0;
      74. }
      75. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */

  • 相关阅读:
    【python】二:基础学习-组织架构函数等
    如何检测租用的香港服务器是不是CN2线路呢?
    解释Python中的上下文管理器(with语句)的作用和用法
    Redis总结
    假设检验:如何理解单侧、双侧检验的拒绝域
    记一次 .NET某列控连锁系统 崩溃分析
    面试常考数据结构:红黑树、B树、B+树各自适用的场景
    【JS基础】在js中如何简单的使用正则表达式
    IO流-数据流
    黑龙江省等保评测常用的安全设备,看这一篇就够了
  • 原文地址:https://blog.csdn.net/bitucas/article/details/125542516