fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // 宣告節點結構
  5. typedef struct ns
  6. {
  7. int data;
  8. struct ns* next;
  9. } node;
  10.  
  11. // 宣告相關函式
  12. node* create_node(int);
  13. void insert_node(node*, node*);
  14. void remove_node(node*);
  15. void print_lists(node*);
  16. void free_lists(node*);
  17.  
  18. int main(void)
  19. {
  20. int ac[100];
  21. ac[0] = 20;
  22. // 宣告節點
  23. node* lists = create_node(0);
  24. node* a = create_node(1);
  25. node* b = create_node(2);
  26. node* c = create_node(3);
  27. node* d = create_node(4);
  28. //node* e = create_node(ac[0]);
  29.  
  30. // 0 -> 5
  31. insert_node(lists, create_node(ac[0]));
  32.  
  33. // 0 -> 1 -> 5
  34. insert_node(lists, a);
  35.  
  36. // 1 -> 2 -> 5
  37. insert_node(a, b);
  38.  
  39. // 1 -> 3 -> 2
  40. insert_node(a, c);
  41.  
  42. // 5 -> 4
  43. insert_node(create_node(ac[0]), d);
  44.  
  45. print_lists(lists);
  46. free_lists(lists);
  47.  
  48. system("pause");
  49. }
  50.  
  51. node* create_node(int data)
  52. {
  53. // 動態配置記憶體
  54. node* n = (node*)malloc(sizeof(node));
  55.  
  56. n->data = data;
  57. n->next = NULL;
  58.  
  59. return n;
  60. }
  61.  
  62. void insert_node(node* n1, node* n2)
  63. {
  64. n2->next = n1->next;
  65. n1->next = n2;
  66. }
  67.  
  68. void remove_node(node* n1)
  69. {
  70. n1->next = n1->next->next;
  71. }
  72.  
  73. void print_lists(node* lists)
  74. {
  75. node* n = lists;
  76.  
  77. // 依序印出節點內容
  78. while (n != NULL)
  79. {
  80. printf("%d ", n->data);
  81.  
  82. n = n->next;
  83. }
  84.  
  85. printf("\n");
  86. }
  87.  
  88. void free_lists(node* lists)
  89. {
  90. // 遞迴刪除串列所有節點
  91. if (lists->next != NULL)
  92. {
  93. free_lists(lists->next);
  94. }
  95.  
  96. free(lists);
  97. }
Success #stdin #stdout #stderr 0s 2300KB
stdin
Standard input is empty
stdout
0 1 3 2 20 
stderr
sh: 1: pause: not found