主页 > 人工智能  > 

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

头文件:head.h

#ifndef __HEAD_H__ #define __HEAD_H__ #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 20 enum num {success,false=-1}; typedef int datatype; typedef struct { int len; datatype data[MAXSIZE]; }Sqlist; Sqlist* create_sqlist(); int insert(Sqlist* list,datatype element); void show(Sqlist *list); int tail_delete(Sqlist *list); int add_insert(Sqlist *list,int sub,datatype element); int delete_insert(Sqlist *list,int sub); int change_list(Sqlist *list,int sub,datatype element); void find(Sqlist *list,int sub); int find_data(Sqlist* list,datatype element); void delete_data(Sqlist* list,datatype element); void change_data(Sqlist* list,datatype element); void del_double(Sqlist* list); void swap(Sqlist* list); void choice_swap(Sqlist* list); #endif

测试文件:test.c

#include"head.h" //创建顺序表 Sqlist * create_sqlist() { Sqlist *list = (Sqlist*)malloc(sizeof(Sqlist)); if(NULL == list) { printf("创建失败!"); return NULL; } list->len=0; memset(list->data,0,sizeof(list->data)); return list; } //尾插 int insert(Sqlist* list,datatype element) { if(NULL ==list||list->len==MAXSIZE) { printf("插入失败"); return false; } list->data[list->len]=element; list->len++; return success; } //展示顺序表 void show(Sqlist *list) { if(NULL==list ||list->len==0) { printf("false"); return ; } for(int i=0;i<list->len;i++) { printf("%d\t",list->data[i]); } putchar(10); } //尾删 int tail_delete(Sqlist *list) { if(NULL==list||list->len==0) { printf("删除失败"); return false; } list->data[list->len-1]=0; list->len--; return success; } //给定下标插入数据 int add_insert(Sqlist *list,int sub,datatype element) { if(NULL==list||list->len==MAXSIZE||sub<0||sub>list->len) { printf("插入失败\n"); return false; } for(int i=list->len-1;i>=sub;i--) { list->data[i+1]=list->data[i]; } list->data[sub]=element; list->len++; return success; } //给定下标删除数据 int delete_insert(Sqlist *list,int sub) { if(NULL==list||sub<0||sub>=list->len||list->len==0) { printf("删除失败\n"); return false; } for(int i=sub+1;i<list->len;i++) { list->data[i-1]=list->data[i]; } list->len--; return success; } //给定下标修改数据 int change_list(Sqlist *list,int sub,datatype element) { if(NULL==list ||sub<0||sub>=list->len||list->len==0) { printf("修改失败\n"); return false; } list->data[sub]=element; return success; } //给定下标查找数据 void find(Sqlist *list,int sub) { if(NULL==list ||sub<0||sub>=list->len||list->len==0) { printf("查找失败\n"); return ; } printf("%d\n",list->data[sub]); } //按元素元素查找 int find_data(Sqlist* list,datatype element) { if(NULL==list||list->len==0) { printf("查找失败\n"); return false; } for(int i=0;i<list->len;i++) { if(list->data[i]==element) { return i; } } } //按元素删除 void delete_data(Sqlist* list,datatype element) { int j=find_data(list,element); delete_insert(list,j); } //按元素修改 void change_data(Sqlist* list,datatype element) { int j=find_data(list,element); printf("请输入修改的数据:"); int data; scanf("%d",&data); change_list(list,j,data); } //去重 void del_double(Sqlist* list) { if(NULL==list||list->len==0||list->len==1) { printf("去重失败\n"); return; } for(int i=0;i<list->len;i++) { for(int j=i+1;j<list->len;j++) { if(list->data[i]==list->data[j]) { delete_insert(list,j); j--; } } } } //冒泡排序 void swap(Sqlist* list) { int t; if(NULL==list||list->len==0) { printf("排序失败\n"); return; } for(int i=0;i<list->len-1;i++) { for(int j=0;j<list->len-1-i;j++) { if(list->data[j]<list->data[j+1]) t=list->data[j]; list->data[j]=list->data[j+1]; list->data[j+1]=t; } } } //选择排序 void choice_swap(Sqlist* list) { int t; int i; int min_index; if(NULL==list||list->len==0) { printf("排序失败\n"); return; } for(i=1;i<list->len;i++) { min_index=i-1; for(int j=i;j<list->len;j++) { if(list->data[min_index]>list->data[j]) { min_index=j; } } if(min_index!=i-1) { t=list->data[min_index]; list->data[min_index]=list->data[i-1]; list->data[i-1]=t; } } }

主文件:main.c

#include"head.h" int main(int argc, const char *argv[]) { Sqlist* list=create_sqlist(); int n; datatype element; printf("请输入插入几个数:"); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&element); insert(list,element); } show(list); tail_delete(list); show(list); int sub; printf("请输入添加数据的下标:"); scanf("%d",&sub); printf("请输入添加的数据:"); scanf("%d",&element); add_insert(list,sub,element); show(list); printf("请输入删除的下标:"); scanf("%d",&sub); delete_insert(list,sub); show(list); printf("请输入修改的下标:"); scanf("%d",&sub); printf("请输入修改的数据:"); scanf("%d",&element); change_list(list,sub,element); show(list); printf("请输入查找的下标:"); scanf("%d",&sub); find(list,sub); //按值查找 printf("请输入要查找的值:"); scanf("%d",&element); int j=find_data(list,element); printf("要查找的值的下标为:%d\n",j); //按值删除 printf("请输入要删除的值:"); scanf("%d",&element); delete_data(list,element); show(list); //按值修改 printf("请输入要修改的值:"); scanf("%d",&element); change_data(list,element); show(list); //去重 del_double(list); printf("去重后的数据为:"); show(list); //冒泡排序 swap(list); printf("降序后的结果为:"); show(list); //选择排序 choice_swap(list); printf("升序后的结果为:"); show(list); return 0; }

运行结果:

标签:

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除