[关闭]
@guochy2012 2014-03-10T11:37:57.000000Z 字数 1472 阅读 1583

链表声明

  1. struct LinkNode
  2. {
  3. int data;
  4. struct LinkNode *next;
  5. };
  6. typedef struct LinkNode* LinkList;
  7. void init_list(LinkList*);
  8. void create_list_head(LinkList, int *, int);
  9. void create_list_tail(LinkList, int *, int);
  10. int insert_element(LinkList, int, int);
  11. int delete_element(LinkList, int);
  12. int get_length(LinkList);
  13. int is_empty(LinkList);
  14. int get_value(LinkList, int, int*);
  15. int set_value(LinkList, int, int);
  16. void debug(LinkList);
  17. void reverse_list(LinkList);
  18. void clear(LinkList);
  19. void destroy(LinkList*);
  1. void init_list(LinkList* L)
  2. {
  3. *L = (LinkList)malloc(sizeof(struct LinkNode));
  4. (*L)->data = 0;
  5. (*L)->next = NULL;
  6. }
  7. void destroy(LinkList* L)
  8. {
  9. clear(*L);
  10. free(*L);
  11. *L = NULL;
  12. }
  13. void debug(LinkList L)
  14. {
  15. LinkList p = L->next;
  16. while(p)
  17. {
  18. printf("%d ", p->data);
  19. p = p->next;
  20. }
  21. printf("\n");
  22. }
  23. int get_length(LinkList L)
  24. {
  25. LinkList p = L->next;
  26. int cnt = 0;
  27. while(p)
  28. {
  29. ++cnt;
  30. p = p->next;
  31. }
  32. return cnt;
  33. }
  34. int is_empty(LinkList L)
  35. {
  36. return L->next == NULL;
  37. }
  38. int get_value(LinkList L, int pos, int *data)
  39. {
  40. LinkList p = L->next;
  41. int ix = 0;
  42. while(p && ix < pos)
  43. {
  44. p = p->next;
  45. ++ix;
  46. }
  47. if (p)
  48. {
  49. *data = p->data;
  50. return 0;
  51. }
  52. return -1;
  53. }
  54. void create_list_head(LinkList L, int *arr, int n)
  55. {
  56. int ix = 0;
  57. LinkList tmp;
  58. for(ix = 0; ix < n; ix++)
  59. {
  60. tmp =(LinkList)malloc(sizeof(struct LinkNode));
  61. tmp ->data = arr[ix];
  62. tmp->next = L->next;
  63. L->next = tmp;
  64. }
  65. }
  66. void create_list_tail(LinkList L, int *arr, int n)
  67. {
  68. LinkList tail = L;
  69. LinkList tmp;
  70. int ix;
  71. for(ix = 0; ix != n; ++ix)
  72. {
  73. tmp =(LinkList)malloc(sizeof(struct LinkNode));
  74. tmp ->data = arr[ix];
  75. tail->next = tmp;
  76. tail = tmp;
  77. }
  78. tail->next = NULL;
  79. }
  80. int insert_element(LinkList, int, int)
  81. {
  82. }
  83. void clear(LinkList L)
  84. {
  85. LinkList p = L->next;
  86. LinkList q;
  87. while(p)
  88. {
  89. q = p;
  90. p = p->next;
  91. free(q);
  92. }
  93. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注