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
- #include "./SeqList.h"
- #include
- #include
- //创建顺序表
- SeqList* create_seqList()
- {
-
- SeqList *list = (SeqList*)malloc(sizeof(SeqList));
-
- if(NULL == list)
- {
- return NULL;
- }
- list -> pos = 0;//初始化要操作的位置为0
-
-
- return list;
- }
-
- //插入数据
- void insert_SeqList(SeqList* list,datatype num)
- {
- //判断顺序表是否为满
- if(list->pos >= N)
- {
- printf("%d顺序表为满,插入失败!\n",num);
- return;
- }
-
- list->data[list->pos] = num;
- (list->pos)++;
- printf("%d插入成功!\n",num);
- return;
- }
-
- //遍历顺序表
- void show_SeqList(SeqList* list)
- {
- for(int i=0;list->pos>i;i++)
- {
-
- printf("%d ",list->data[i]);
-
- }
- printf("\n");
- return;
- }
-
- //从尾部删除
-
- datatype del_SeqList(SeqList *list)
- {
- int num;
- if(0 == list->pos)
- {
- printf("顺序表为空!\n");
- return 0;
- }
- (list->pos)--;
- num = list->data[list->pos];
-
-
- return num;
- }
-
- //按位插入
- void insert_location_SeqList(SeqList* list,datatype index,datatype num)
-
- {
- if(list->pos >= N)
- {
- printf("顺序表为满,插入失败!\n");
- return;
- }
- if(index<0 || index>list->pos)
- {
- printf("index=%d属于非法插入!\n",index);
- return;
- }
- int i=0;
- for( i=list->pos;i>index;i--)
- {
- list->data[i] = list->data[i-1];
- }
- list->data[i] = num;
- (list->pos)++;
- printf("%d成功插入到下标为%d的位置!\n",num,index);
- return;
-
-
- }
- //按位删除
- datatype del_location_SeqList(SeqList* list,datatype index)
- {
- int i;
- if(0 == list->pos)
- {
- printf("顺序表为空!\n");
- return 0;
- }
-
- for( i=index;i<(list->pos)-1;i++)
- {
- list->data[i] = list->data[i+1];
- }
- (list->pos)--;
- printf("下标为%d的数据删除成功!\n",index);
- return index;
- }
- //按位修改
- void rm_location_SeqList(SeqList* list,datatype index,datatype num)
- {
- if(index<0 || index>list->pos)
- {
- printf("index=%d属于非法修改!\n",index);
- return;
- }
- list->data[index] = num;
- printf("下标为%d的数据修改成功!\n",index);
-
- return;
-
- }
-
- //按位查找
- void find_location_SeqList(SeqList* list,datatype index)
- {
- if(0 == list->pos)
- {
- printf("顺序表为空!\n");
- return;
- }
- printf("下标为%d是数据是%d\n",index,list->data[index]);
- return;
-
- }
-
- //按数据修改
- void update_SeqList(SeqList* list,datatype oldNum,datatype newNum)
- {
- int i=0;
- for(i=0;i
pos;i++) - {
- if(list->data[i] == oldNum)
- {
- list->data[i] == newNum;
- }
- }
- printf("数据修改完成!\n");
- return;
- }
-
-
-
- //按数据查找
- int select_SelqList(SeqList* list,datatype num)
- {
- int i=0;
- for(i=0;i
pos;i++) - {
- if(list->data[i] == num)
- {
- return i;
- }
- }
- return -1;
- }
-
-
- //顺序表去重
- //1221134324534541
- //12345
- void delrepeat_SeqList(SeqList* list)
- {
- if(0 == list->pos)
- {
- printf("顺序表为空!\n");
- return ;
- }
-
- int i,j;
- for(i=0;i<(list->pos);i++)
- {
- for(j=i+1;j<(list->pos);j++)
- {
- if(list->data[i] == list->data[j])
- {
- del_location_SeqList(list,j);
- j--;
- }
-
- }
- }
- printf("去重成功!\n");
-
- return;
-
- }
- //释放顺序表
- void free_SeqList(SeqList* list)
- {
- free(list);
- list = NULL;
- printf("释放成功!");
- return;
- }
mian.c
- #include
- #include "./SeqList.h"
- int main(int argc, const char *argv[])
- {
- SeqList * list = create_seqList();
-
- /*
- insert_SeqList(list,10);
- insert_SeqList(list,100);
- insert_SeqList(list,1000);
- insert_SeqList(list,10000);
- insert_SeqList(list,100000);
-
- show_SeqList(list);
- del_SeqList(list);
- show_SeqList(list);
- del_SeqList(list);
- show_SeqList(list);
- del_SeqList(list);
- show_SeqList(list);
- del_SeqList(list);
- show_SeqList(list);
- del_SeqList(list);
- show_SeqList(list);
- insert_location_SeqList(list,2,222);
- show_SeqList(list);
- del_location_SeqList(list,2);
- show_SeqList(list);
- rm_location_SeqList(list,2,222);
- show_SeqList(list);
- find_location_SeqList(list,2);
-
- update_SeqList(list, 11, 111);
- show_seqList(list);
- int index = select_SelqList(list, 2222);
- printf("index=%d\n", index);
- */
- insert_SeqList(list,1);
- insert_SeqList(list,2);
- insert_SeqList(list,2);
- insert_SeqList(list,1);
- insert_SeqList(list,1);
- insert_SeqList(list,3);
- insert_SeqList(list,4);
- insert_SeqList(list,3);
- insert_SeqList(list,2);
- insert_SeqList(list,4);
- insert_SeqList(list,5);
- insert_SeqList(list,3);
- insert_SeqList(list,4);
- insert_SeqList(list,5);
- insert_SeqList(list,4);
- insert_SeqList(list,1);
-
- delrepeat_SeqList(list);
- show_SeqList(list);
- free_SeqList(list);
-
- return 0;
- }
SeqList.h
- #ifndef __01_H__
- #define __01_H__
- #define N 17 //顺序表容量
- typedef int datatype;
- typedef struct
- {
- datatype data[N];
- int pos;
- }SeqList;
-
- SeqList* create_seqList();
- void insert_SeqList(SeqList* list,datatype num);
-
- void show_SeqList(SeqList* list);
- datatype del_SeqList(SeqList *list);
- void insert_location_SeqList(SeqList* list,datatype index,datatype num);
- datatype del_location_SeqList(SeqList* list,datatype index);
- void rm_location_SeqList(SeqList* list,datatype index,datatype num);
- void find_location_SeqList(SeqList* list,datatype index);
- void update_SeqList(SeqList* list,datatype oldNum,datatype newNum);
-
- int select_SelqList(SeqList* list,datatype num);
-
- void delrepeat_SeqList(SeqList* list);
- void free_SeqList(SeqList* list);
- #endif
makefile.cfg
- Target:=a.out
- obj:=SeqList.o main.o
- CAN:=-c -o
- CC:=gcc
makefile
- -include ./makefile.cfg
- $(Target):$(obj)
- $(CC) $^ -o $@
- %.o:%.c
- $(CC) $< $(CAN) $@
- .PHONY:clean
-
- clean:
- rm $(obj) $(Target)