当前位置:   article > 正文

从0开始的数据结构的书写-------线性表(单链表)

从0开始的数据结构的书写-------线性表(单链表)

(复习考研的休息区,心血来潮,写点代码)

三个规则:

1、不使用c++ stl库进行书写

2、最好基于严蔚敏老师的数据结构

3、最好使用malloc和realloc动态分配内存

(如果有问题或者是有没有实现的操作,请大家提出来)

  1. // 链表实现
  2. #include<iostream>
  3. #include<cstring>
  4. using namespace std;
  5. #define N 100
  6. #define OK true
  7. #define ERRORINT 0x3f3f3f3f3f
  8. #define ERROR false
  9. typedef struct LNode
  10. {
  11. // 单链表
  12. int data;
  13. struct LNode *ne;
  14. }LNode , *LinkList;
  15. void InitList(LinkList &L)
  16. {
  17. L = (LinkList)malloc(sizeof(LNode));
  18. L -> ne = NULL; // 建立带头节点的单链表
  19. }
  20. // 头插法
  21. void HeadInsert(LinkList &L)
  22. {
  23. for(int i = 1;i <= 10;i ++)
  24. {
  25. LinkList p = (LinkList)malloc(sizeof(LNode));
  26. p -> data = i;
  27. p -> ne = L -> ne;
  28. L -> ne = p;
  29. }
  30. }
  31. // 尾插法
  32. void TailInsert(LinkList &L)
  33. {
  34. LinkList now = L;
  35. for(int i = 1;i <= 10;i ++)
  36. {
  37. LinkList p = (LinkList)malloc(sizeof(LNode));
  38. p -> data = i;
  39. now -> ne = p;
  40. now = p;
  41. }
  42. now -> ne = NULL;
  43. }
  44. // 插入到第idx位置
  45. bool InsertList(LinkList &L , int idx , int e)
  46. {
  47. LinkList p = L;
  48. int i = 0;
  49. while(p && i < idx - 1)
  50. {
  51. p = p -> ne;
  52. i ++;
  53. }
  54. if(!(p -> ne) || i > idx - 1) return ERROR;
  55. cout << "插入数据" << e << endl;
  56. LinkList s = (LinkList) malloc(sizeof(LNode));
  57. s -> data = e;
  58. s -> ne = p -> ne;
  59. p -> ne = s;
  60. return OK;
  61. }
  62. // 删除节点
  63. int DeleteList(LinkList &L , int idx)
  64. {
  65. LinkList p = L;
  66. int i = 0;
  67. while(p && i < idx - 1)
  68. {
  69. p = p -> ne;
  70. i ++;
  71. }
  72. if(!p || i > idx - 1) return ERROR;
  73. int e = p -> ne -> data;
  74. cout << "删除节点" << e << endl;
  75. p -> ne = p -> ne -> ne;
  76. return e;
  77. }
  78. void print(LinkList L)
  79. {
  80. LinkList p = L;
  81. cout << "当前链表数据为:";
  82. p = p -> ne;
  83. bool f = false;
  84. while(p)
  85. {
  86. if(f) cout << "->";
  87. cout << p -> data;
  88. f = true;
  89. p = p -> ne;
  90. }
  91. cout << endl;
  92. }
  93. int main()
  94. {
  95. LinkList L;
  96. InitList(L);
  97. // HeadInsert(L);
  98. // print(L)
  99. TailInsert(L);
  100. print(L);
  101. InsertList(L , 3 , 11);
  102. InsertList(L , 5 , 12);
  103. print(L);
  104. DeleteList(L , 6);
  105. DeleteList(L , 3);
  106. print(L);
  107. return 0;
  108. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/517886
推荐阅读
相关标签
  

闽ICP备14008679号