【数据结构】单链表的增删改查

前端之家收集整理的这篇文章主要介绍了【数据结构】单链表的增删改查前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

单链表的增删改查实例:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct LinkedList
  5. {
  6. int elem;
  7. LinkedList * next;
  8. }List,* PList;
  9.  
  10. PList CreateLinkedList(int size);
  11. void DisplayLinkedList(PList L);
  12. void InsertLinkedList(PList L,int locate,int elem);
  13. void DeleteLinkedList(PList L,int locate);
  14.  
  15. void main()
  16. {
  17. int size;
  18. PList L;
  19.  
  20. printf("输入此单链表的大小:");
  21. scanf("%d",&size);
  22.  
  23. L = CreateLinkedList(size); // 新建和显示
  24. DisplayLinkedList(L);
  25. printf("\n在位置5插入元素2后\n");
  26. InsertLinkedList(L,5,2); // 插入并显示
  27. DisplayLinkedList(L);
  28. printf("\n删除位置3元素后\n");
  29. DeleteLinkedList(L,3); // 删除3并显示
  30. DisplayLinkedList(L);
  31. }
  32.  
  33. PList CreateLinkedList(int size)
  34. {
  35. PList P,L;
  36. L = (PList)malloc(sizeof(List));
  37.  
  38. L->elem = 0;
  39. L->next = NULL;
  40.  
  41. P = L;
  42.  
  43. for (int i = 0; i < size; i++)
  44. {
  45. P->next = (PList)malloc(sizeof(List)); // 首先分配空间 然后再赋值
  46. P = P->next;
  47. P->elem = rand()%100;
  48. P->next = NULL;
  49. }
  50.  
  51. return L;
  52. }
  53.  
  54. void DisplayLinkedList(PList L)
  55. {
  56. PList P = L;
  57. while (P->next != NULL)
  58. {
  59. P = P->next;
  60. printf("%d\t",P->elem);
  61. }
  62. printf("\n");
  63. }
  64.  
  65. void InsertLinkedList(PList L,int elem) // 在 Locate位置上面插入元素 elem
  66. {
  67. PList P = L;
  68. PList Q = NULL;
  69.  
  70. if (locate != 0)
  71. locate--;
  72.  
  73. while (P->next != NULL && locate != 0)
  74. {
  75. locate--;
  76. P = P->next;
  77. }
  78.  
  79. if (locate != 0)
  80. printf("\n输入的范围有误\n");
  81. else
  82. {
  83. Q = (PList)malloc(sizeof(List)); // 包含了 在最后插入
  84. Q->elem = elem;
  85. Q->next = P->next;
  86. P->next = Q;
  87. }
  88. }
  89.  
  90.  
  91. void DeleteLinkedList(PList L,int locate)
  92. {
  93. PList P = L;
  94. PList Q = NULL;
  95.  
  96. if (locate != 0)
  97. locate--;
  98.  
  99. while (P->next != NULL && locate != 0)
  100. {
  101. locate--;
  102. P = P->next;
  103. }
  104.  
  105. if (locate != 0)
  106. printf("\n输入的范围有误\n");
  107. else
  108. {
  109. Q = P->next;
  110. P->next = P->next ->next;
  111. free(Q);
  112. }
  113. }

猜你在找的数据结构相关文章