• 对顺序表的基本操作(增删查改),并编写makefile进行编


    1.定义顺序表结构体

    2.创建顺序表

    3.从尾部插入数据

    4.遍历顺序表

    5.从尾部删除数据

    6.按下标插入数据

    7.按下标删除数据

    8.按下标修改数据

    9.按下标查找数据

    10.按数据修改数据

    11..按数据查找位置

    12.顺序表去重

            删除重复数据

            (提示:将先出现的数据与后面的数据对比,如果有重复的将后面的数据删除)

            提示:可以直接使用按位置删除的函数

            顺序表中原有:1 2 2 1 1 3 4 3 2 4 5 3 4 5 4 1

            ......

            顺序表中存储:1 2 3 4 5

    SeqList.c

    1. #include "./SeqList.h"
    2. #include
    3. #include
    4. //创建顺序表
    5. SeqList* create_seqList()
    6. {
    7. SeqList *list = (SeqList*)malloc(sizeof(SeqList));
    8. if(NULL == list)
    9. {
    10. return NULL;
    11. }
    12. list -> pos = 0;//初始化要操作的位置为0
    13. return list;
    14. }
    15. //插入数据
    16. void insert_SeqList(SeqList* list,datatype num)
    17. {
    18. //判断顺序表是否为满
    19. if(list->pos >= N)
    20. {
    21. printf("%d顺序表为满,插入失败!\n",num);
    22. return;
    23. }
    24. list->data[list->pos] = num;
    25. (list->pos)++;
    26. printf("%d插入成功!\n",num);
    27. return;
    28. }
    29. //遍历顺序表
    30. void show_SeqList(SeqList* list)
    31. {
    32. for(int i=0;list->pos>i;i++)
    33. {
    34. printf("%d ",list->data[i]);
    35. }
    36. printf("\n");
    37. return;
    38. }
    39. //从尾部删除
    40. datatype del_SeqList(SeqList *list)
    41. {
    42. int num;
    43. if(0 == list->pos)
    44. {
    45. printf("顺序表为空!\n");
    46. return 0;
    47. }
    48. (list->pos)--;
    49. num = list->data[list->pos];
    50. return num;
    51. }
    52. //按位插入
    53. void insert_location_SeqList(SeqList* list,datatype index,datatype num)
    54. {
    55. if(list->pos >= N)
    56. {
    57. printf("顺序表为满,插入失败!\n");
    58. return;
    59. }
    60. if(index<0 || index>list->pos)
    61. {
    62. printf("index=%d属于非法插入!\n",index);
    63. return;
    64. }
    65. int i=0;
    66. for( i=list->pos;i>index;i--)
    67. {
    68. list->data[i] = list->data[i-1];
    69. }
    70. list->data[i] = num;
    71. (list->pos)++;
    72. printf("%d成功插入到下标为%d的位置!\n",num,index);
    73. return;
    74. }
    75. //按位删除
    76. datatype del_location_SeqList(SeqList* list,datatype index)
    77. {
    78. int i;
    79. if(0 == list->pos)
    80. {
    81. printf("顺序表为空!\n");
    82. return 0;
    83. }
    84. for( i=index;i<(list->pos)-1;i++)
    85. {
    86. list->data[i] = list->data[i+1];
    87. }
    88. (list->pos)--;
    89. printf("下标为%d的数据删除成功!\n",index);
    90. return index;
    91. }
    92. //按位修改
    93. void rm_location_SeqList(SeqList* list,datatype index,datatype num)
    94. {
    95. if(index<0 || index>list->pos)
    96. {
    97. printf("index=%d属于非法修改!\n",index);
    98. return;
    99. }
    100. list->data[index] = num;
    101. printf("下标为%d的数据修改成功!\n",index);
    102. return;
    103. }
    104. //按位查找
    105. void find_location_SeqList(SeqList* list,datatype index)
    106. {
    107. if(0 == list->pos)
    108. {
    109. printf("顺序表为空!\n");
    110. return;
    111. }
    112. printf("下标为%d是数据是%d\n",index,list->data[index]);
    113. return;
    114. }
    115. //按数据修改
    116. void update_SeqList(SeqList* list,datatype oldNum,datatype newNum)
    117. {
    118. int i=0;
    119. for(i=0;ipos;i++)
    120. {
    121. if(list->data[i] == oldNum)
    122. {
    123. list->data[i] == newNum;
    124. }
    125. }
    126. printf("数据修改完成!\n");
    127. return;
    128. }
    129. //按数据查找
    130. int select_SelqList(SeqList* list,datatype num)
    131. {
    132. int i=0;
    133. for(i=0;ipos;i++)
    134. {
    135. if(list->data[i] == num)
    136. {
    137. return i;
    138. }
    139. }
    140. return -1;
    141. }
    142. //顺序表去重
    143. //1221134324534541
    144. //12345
    145. void delrepeat_SeqList(SeqList* list)
    146. {
    147. if(0 == list->pos)
    148. {
    149. printf("顺序表为空!\n");
    150. return ;
    151. }
    152. int i,j;
    153. for(i=0;i<(list->pos);i++)
    154. {
    155. for(j=i+1;j<(list->pos);j++)
    156. {
    157. if(list->data[i] == list->data[j])
    158. {
    159. del_location_SeqList(list,j);
    160. j--;
    161. }
    162. }
    163. }
    164. printf("去重成功!\n");
    165. return;
    166. }
    167. //释放顺序表
    168. void free_SeqList(SeqList* list)
    169. {
    170. free(list);
    171. list = NULL;
    172. printf("释放成功!");
    173. return;
    174. }

    mian.c

    1. #include
    2. #include "./SeqList.h"
    3. int main(int argc, const char *argv[])
    4. {
    5. SeqList * list = create_seqList();
    6. /*
    7. insert_SeqList(list,10);
    8. insert_SeqList(list,100);
    9. insert_SeqList(list,1000);
    10. insert_SeqList(list,10000);
    11. insert_SeqList(list,100000);
    12. show_SeqList(list);
    13. del_SeqList(list);
    14. show_SeqList(list);
    15. del_SeqList(list);
    16. show_SeqList(list);
    17. del_SeqList(list);
    18. show_SeqList(list);
    19. del_SeqList(list);
    20. show_SeqList(list);
    21. del_SeqList(list);
    22. show_SeqList(list);
    23. insert_location_SeqList(list,2,222);
    24. show_SeqList(list);
    25. del_location_SeqList(list,2);
    26. show_SeqList(list);
    27. rm_location_SeqList(list,2,222);
    28. show_SeqList(list);
    29. find_location_SeqList(list,2);
    30. update_SeqList(list, 11, 111);
    31. show_seqList(list);
    32. int index = select_SelqList(list, 2222);
    33. printf("index=%d\n", index);
    34. */
    35. insert_SeqList(list,1);
    36. insert_SeqList(list,2);
    37. insert_SeqList(list,2);
    38. insert_SeqList(list,1);
    39. insert_SeqList(list,1);
    40. insert_SeqList(list,3);
    41. insert_SeqList(list,4);
    42. insert_SeqList(list,3);
    43. insert_SeqList(list,2);
    44. insert_SeqList(list,4);
    45. insert_SeqList(list,5);
    46. insert_SeqList(list,3);
    47. insert_SeqList(list,4);
    48. insert_SeqList(list,5);
    49. insert_SeqList(list,4);
    50. insert_SeqList(list,1);
    51. delrepeat_SeqList(list);
    52. show_SeqList(list);
    53. free_SeqList(list);
    54. return 0;
    55. }

    SeqList.h

    1. #ifndef __01_H__
    2. #define __01_H__
    3. #define N 17 //顺序表容量
    4. typedef int datatype;
    5. typedef struct
    6. {
    7. datatype data[N];
    8. int pos;
    9. }SeqList;
    10. SeqList* create_seqList();
    11. void insert_SeqList(SeqList* list,datatype num);
    12. void show_SeqList(SeqList* list);
    13. datatype del_SeqList(SeqList *list);
    14. void insert_location_SeqList(SeqList* list,datatype index,datatype num);
    15. datatype del_location_SeqList(SeqList* list,datatype index);
    16. void rm_location_SeqList(SeqList* list,datatype index,datatype num);
    17. void find_location_SeqList(SeqList* list,datatype index);
    18. void update_SeqList(SeqList* list,datatype oldNum,datatype newNum);
    19. int select_SelqList(SeqList* list,datatype num);
    20. void delrepeat_SeqList(SeqList* list);
    21. void free_SeqList(SeqList* list);
    22. #endif

    makefile.cfg

    1. Target:=a.out
    2. obj:=SeqList.o main.o
    3. CAN:=-c -o
    4. CC:=gcc

    makefile

    1. -include ./makefile.cfg
    2. $(Target):$(obj)
    3. $(CC) $^ -o $@
    4. %.o:%.c
    5. $(CC) $< $(CAN) $@
    6. .PHONY:clean
    7. clean:
    8. rm $(obj) $(Target)

  • 相关阅读:
    【Python】使用 Python 中的 aioredis 实现后进先出队列
    8月19日PMP出成绩时间,公布了!
    C++ Reference: Standard C++ Library reference: C Library: cerrno
    图像增强及运算篇之图像掩膜直方图和HS直方图
    多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)
    Python中lambda函数&eval()函数&递归的详细用法
    大数据指标 透视50个DeFi头部协议
    android开发教程视频,android组件化和插件化
    【配置vscode编写python代码并输出到外部控制台】
    构造方法的私有化和枚举enum
  • 原文地址:https://blog.csdn.net/weixin_51949422/article/details/136176717