【数据结构】双链表的演示

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

双链表 实现增加删除修改功能

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Data
  5. {
  6. Data *prior; // 前驱指针
  7. Data *next; // 后继指针
  8. int elem; // 数据元素
  9. }DoubleLinked,*PDoubleLinked;
  10.  
  11. void DisDoubleLinked(PDoubleLinked L);
  12. void InsertDoubleLinked(PDoubleLinked L,int index,int elem);
  13. void DeleteDoubleLinked(PDoubleLinked L,int index);
  14. void ModifyDoubleLinked(PDoubleLinked L,int elem);
  15.  
  16. void main()
  17. {
  18. PDoubleLinked L,P,Q;
  19. int size = 0;
  20.  
  21. /**先初始化在使用*/
  22. L = (PDoubleLinked)malloc(sizeof(DoubleLinked));
  23.  
  24. // 两种策略
  25. // 一 用到的时候再申请
  26. // 二 先申请 一大段 不够的时候再申请
  27. P = L;
  28. L->prior = NULL;
  29.  
  30. printf("请输入双链表的大小:");
  31. scanf("%d",&size);
  32.  
  33. while (size-- != 0)
  34. {
  35. P->next = (PDoubleLinked)malloc(sizeof(DoubleLinked));
  36. Q = P;
  37. P = P->next;
  38. P->prior = Q;
  39. P->next = NULL;
  40. P->elem = size*2+1;
  41. }
  42. // 显示双链表
  43. DisDoubleLinked(L);
  44. // 增
  45. InsertDoubleLinked(L,2,23);
  46. printf("\n");
  47. DisDoubleLinked(L);
  48. printf("\n");
  49. // 删
  50. DeleteDoubleLinked(L,3);
  51. DisDoubleLinked(L);
  52. printf("\n");
  53. // 改
  54. ModifyDoubleLinked(L,3,521);
  55. DisDoubleLinked(L);
  56. printf("\n");
  57. }
  58.  
  59.  
  60. void DisDoubleLinked(PDoubleLinked L)
  61. {
  62. PDoubleLinked P = L->next;
  63.  
  64. while (P != NULL)
  65. {
  66. printf("%d\t",P->elem);
  67. P = P->next;
  68. }
  69. }
  70.  
  71. void InsertDoubleLinked(PDoubleLinked L,int elem)
  72. {
  73. PDoubleLinked P = L;
  74. PDoubleLinked T;
  75. PDoubleLinked Q = (PDoubleLinked)malloc(sizeof(DoubleLinked));
  76. Q->elem = elem;
  77.  
  78. while (--index != 0)
  79. {
  80. P = P->next;
  81. }
  82. T = P->next;
  83.  
  84. Q->prior = P;
  85. Q->next = T;
  86.  
  87. P->next = Q;
  88. Q->next = T;
  89. }
  90.  
  91. void DeleteDoubleLinked(PDoubleLinked L,int index)
  92. {
  93. PDoubleLinked P = L;
  94. PDoubleLinked Q;
  95.  
  96. while (--index != 0)
  97. {
  98. P = P->next;
  99. }
  100.  
  101. Q = P->next;
  102. P->next = Q->next;
  103. Q->next->prior = P;
  104. free(Q);
  105. }
  106.  
  107. void ModifyDoubleLinked(PDoubleLinked L,int elem)
  108. {
  109. PDoubleLinked P = L;
  110.  
  111. while (index-- != 0)
  112. {
  113. P = P->next;
  114. }
  115.  
  116. P->elem = elem;
  117. }
  118.  

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