当前位置:   article > 正文

c语言 顺序表的基本操作(创建、初始化、赋值、插入、删除、查询、替换、输出)_c语言顺序表的初始化,插曲,删除,与查找

c语言顺序表的初始化,插曲,删除,与查找

c语言 顺序表的基本操作(创建、初始化、赋值、插入、删除、查询、替换、输出)

1、创建、申请空间

2、初始化、顺序表数据结构大小、长度

3、赋值、顺序表数据结构赋值

4、插入、在指定位置插入数据,后续数据循环后移,长度增加,空间大小增加或者不变

5、删除、删除指定位置的数据,后续数据循环前移,长度减小、空间大小不变

6、查询、查看指定数据是否在顺序表结构中

7、替换、将顺序表结构中指定数值替换为另外的数值

8、输出、输出顺序表结构中存储的数据(根据长度大小输出)

代码如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <Windows.h>
  4. #define Size 5
  5. //显示日期、时间、文件信息
  6. void xinxi()
  7. {
  8. printf("Date : %s\n", __DATE__);
  9. printf("Time : %s\n", __TIME__);
  10. printf("File : %s\n", __FILE__);
  11. printf("Line : %d\n", __LINE__);
  12. printf("\n***以下是程序部分***\n\n");
  13. }
  14. //定义顺序表结构
  15. typedef struct Table
  16. {
  17. int *head;//类似于数组指针
  18. int length;//数据长度
  19. int size;//机构大小
  20. }table;
  21. //初始化顺序表结构
  22. table initcreact()
  23. {
  24. table t;
  25. if ((t.head = (int *)malloc(Size*sizeof(int))) == NULL)
  26. {
  27. printf("申请存储空间失败!");
  28. exit(1);
  29. }
  30. t.length = 0;//初始化长度为 0
  31. t.size = Size;//结构大小
  32. return t;
  33. }
  34. //结构赋值
  35. table fuzhi(table t)
  36. {
  37. int i;
  38. for (i = 0; i < t.size; i++)
  39. {
  40. t.head[i] = i + 1;
  41. t.length++;//长度随赋值情况增加
  42. }
  43. return t;
  44. }
  45. //输出结构存储情况
  46. table prt(table t)
  47. {
  48. printf("存储的数据如下:\n");
  49. for (int i = 0; i < t.length; i++)
  50. printf("%d ", t.head[i]);
  51. printf("\n");
  52. return t;
  53. }
  54. //插入数据
  55. table insert(table t,int elme,int add)
  56. {
  57. if (t.length == t.size)//如果数据结构已满,增加存储空间
  58. t.head= (int *)realloc(t.head, (t.size + 1) * sizeof(int));
  59. if (t.head == NULL)
  60. {
  61. printf("申请存储空间失败!\n");
  62. exit(1);
  63. }
  64. else t.size++;//空间大小增加
  65. int i = t.size;
  66. for (; i >= elme-1; i--)//数据循环后移
  67. t.head[i] = t.head[i - 1];
  68. t.head[elme-1] = add;//指定位置插入数据,赋值
  69. t.length++;//长度增加
  70. return t;
  71. }
  72. //删除指定数据
  73. table deleter(table t, int elme)
  74. {
  75. int i = elme-1;
  76. for (; i <= t.size; i++)
  77. t.head[i] = t.head[i +1];
  78. t.head[i] = 0;
  79. t.length--;
  80. return t;
  81. }
  82. //查询指定数据,返回在数据结构中的位置
  83. int select(table t, int elme)
  84. {
  85. int i;
  86. for (i = 0; i <= t.length; i++)
  87. {
  88. if (t.head[i] == elme)
  89. return i+1;
  90. }
  91. return -1;
  92. }
  93. //替换指定数据
  94. table tihuan(table t, int elme, int add)
  95. {
  96. int i=select(t,elme);
  97. t.head[i-1] = add;
  98. return t;
  99. }
  100. //主函数
  101. int main()
  102. {
  103. xinxi();
  104. table t = initcreact();
  105. t = fuzhi(t);
  106. t = prt(t);
  107. int elme;
  108. printf("请输入插入的位置:");
  109. scanf("%d", &elme);
  110. int add;
  111. printf("请输入插入数据:");
  112. scanf("%d", &add);
  113. if (elme > t.size+1 || elme < 0)
  114. {
  115. printf("输入的位置错误\n");
  116. exit(0);
  117. }
  118. t = insert(t, elme,add);
  119. t = prt(t);
  120. printf("请输入删除的位置:");
  121. scanf("%d", &elme);
  122. if (elme > t.size || elme < 0)
  123. {
  124. printf("输入的位置错误\n");
  125. exit(0);
  126. }
  127. t = deleter(t, elme);
  128. t = prt(t);
  129. printf("查找 5 的位置\n");
  130. elme = select(t, 5);
  131. printf("5 的位置是 %d\n", elme);
  132. t = prt(t);
  133. printf("用 55 替换 5\n");
  134. tihuan(t, 5, 55);
  135. t = prt(t);
  136. system("pause");
  137. return 0;
  138. }

 

 

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

闽ICP备14008679号