当前位置:   article > 正文

[手撕数据结构] 顺序表

[手撕数据结构] 顺序表

这部分东西没什么难点 直接上代码叭

  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<string>
  4. using namespace std;
  5. const int N = 10000;//空间
  6. typedef struct student
  7. {
  8. int data;
  9. }stu;
  10. typedef struct
  11. {
  12. stu* elem;
  13. int length;//当前表长
  14. }Sqlist;
  15. void InitList(Sqlist& L)//初始化顺序表
  16. {
  17. L.elem = new stu[N];
  18. if (!L.elem)
  19. {
  20. cout<<"初始化失败"<<endl;
  21. return;
  22. }
  23. L.length = 0;
  24. return;
  25. }
  26. void Insertlist(int i, int k, Sqlist& L)//在第i处插入k
  27. {
  28. if (L.length == N)
  29. {
  30. cout << "顺序表已满 插入失败" << endl;
  31. return;
  32. }
  33. if (i > L.length+1 || i < 1)
  34. {
  35. cout << "插入处不合法" << endl;
  36. return;
  37. }
  38. for (int j = L.length; j > i - 1; j--)
  39. {
  40. L.elem[j] = L.elem[j - 1];
  41. }
  42. L.elem[i-1].data = k;
  43. L.length++;
  44. return;
  45. }
  46. void Traversal_List(Sqlist& L)//遍历表
  47. {
  48. for (int i = 0; i < L.length; i++)
  49. {
  50. cout << L.elem[i].data << "->";
  51. }
  52. cout << "NULL"<<endl<<"遍历结束" << endl;
  53. }
  54. void Get_Kth_num(int k, Sqlist& L)//找到第K个数
  55. {
  56. if (k<1 || k>L.length)
  57. {
  58. cout << "查找数据不合法"<<endl;
  59. return;
  60. }
  61. cout <<"第"<<k<<"个元素为"<< L.elem[k - 1].data << endl;
  62. }
  63. void Find_Ones_first(int k, Sqlist& L)//找到K第一次出现的序号
  64. {
  65. for (int i = 0; i < L.length; i++)
  66. {
  67. if (L.elem[i].data == k)
  68. {
  69. cout << k << "第一次出现的序号为" << i + 1 << endl;
  70. return;
  71. }
  72. }
  73. cout << "未找到" << endl;
  74. }
  75. void Delete(int k, Sqlist& L)//删除第K个值
  76. {
  77. if (k<1 || k>L.length)
  78. {
  79. cout << "数据不合法 删除失败" << endl;
  80. return;
  81. }
  82. cout<<"第"<<k<<"个元素已经删除 删除值为"<<L.elem[k-1].data<<endl;
  83. for (int i = k-1; i < L.length-1; i++)
  84. {
  85. L.elem[i] = L.elem[i +1];
  86. }
  87. L.length--;
  88. return;
  89. }
  90. int main()
  91. {
  92. Sqlist L;
  93. InitList(L);
  94. Insertlist(1, 8, L);
  95. Insertlist(1, 6, L);
  96. Insertlist(1, 3, L);
  97. Insertlist(1, 6, L);
  98. Insertlist(1, 7, L);
  99. Traversal_List(L);
  100. Get_Kth_num(3,L);
  101. Find_Ones_first(3, L);
  102. Delete(1, L);
  103. Traversal_List(L);
  104. }

效果如下

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

闽ICP备14008679号