主页 > 游戏开发  > 

数据结构-顺序表

数据结构-顺序表
1.顺序表的概念

顺序表:线性表的顺序存储,称为顺序表(数组) 线性表:是由多个类型相同 个数有限的数据元素组成的集合(属相) 顺序表:逻辑结构线性结构 存储结构:顺序存储 线性表的分类:顺序表,链表,栈,队列,数组,字符串

2顺序表的基本操作 2.1 创建顺序表 Sqlist * create_Sqlist() { //创建数据表 Sqlist* list=(Sqlist*)malloc(sizeof(Sqlist)); if(NULL==list) { printf("creat_Sqlist false"); return NULL; } //对数据元素清0 memset(list->data,0,sizeof(list->data)); //对顺序表长度清0 list->len=0; return list; } 2.2 顺序表的尾插 //尾插 int insert_rear(datatype element,Sqlist* list) { //判满判空 if(NULL==list||list->len==MAXSIZE) { printf("insetr_rear error\n"); return FALSE; } //尾插 list->data[list->len]=element; list->len++; return SUCCESS; } 2.3 顺序表的遍历 //循环遍历顺序表 int output_Sqlist(Sqlist *list) { //1.顺序表创建失败 //2.判空 if(NULL==list || list->len==0) { printf("out_sqlist error"); return FALSE; } int i=0; while(i++<list->len) { printf("%d",list->data[i]); } return SUCCESS; } 2.4 顺序表尾删 //尾删 int delete_rear(Sqlist* list) { //判断创建 //判空 if(NULL==list ||list->len==0) { printf("detele_rear error\n"); return FALSE; } //尾删 list->data[list->len-1]=0; list->len--; return SUCCESS; } 2.5 顺序表按下表查找 //按下标查找 int locate_sub(Sqlist *list,int sub) { //1.判断 if(NULL==list||list->len==0) { printf("insert_1 error"); return FALSE; } if(sub<0 ||sub>list->len) { printf("insert_sub error"); return FALSE; } //2.查找 printf("%d",list->data[sub]); return SUCCESS; } 2.6 顺序表按下表删除 //按下标删除 int delete_sub(Sqlist *list,int sub) { //1.判空 //2.判溢出 //3.按下标 if(list->len==0&&NULL==list&&sub>0&&sub<list->len) { printf("delete_sub error"); return FALSE; } for(int i=sub+1;i<list->len;i++) { list->data[i-1]=list->data[i]; } list->len--; return SUCCESS; } 2.7 顺序表按下表修改 //按下标修改 int revise_sub(Sqlist *list,int sub,datatype element) { //1.判断 if(NULL==list||list->len==0) { printf("insert_1 error"); return FALSE; } if(sub<0 ||sub>list->len) { printf("insert_sub error"); return FALSE; } //2.修改 list->data[sub]=element; printf("%d",list->data[sub]); return SUCCESS; } 2.8 顺序表按下表插入 //按下标插入 int insert_sub(Sqlist *list,int sub,datatype element) { //1.插入失败 if(NULL==list||list->len==0) { printf("insert_sub error"); return FALSE; } //2.创建 //3.判断插入下标 if(sub<0 ||sub>list->len) { printf("insert_sub error"); return FALSE; } //4.插入 for(int i=list->len-1;i>=sub;i--) { list->data[i+1]=list->data[i]; } list->data[sub]=element; list->len++; return SUCCESS; } 2.9顺序表按元素查找

//按元素查找 int locate_element(Sqlist *list,datatype element) { //1.判断 if(NULL==list||list->len==0) { printf("create error"); return FALSE; } //2.查找 for(int i=0;i<list->len;i++) { if(element==list->data[i]) { return i; } } return FALSE; } 2.10 顺序表按元素删除 //按元素删除 int delete_element(Sqlist *list,datatype element) { int sub=locate_element(list,element); delete_sub(list,sub); } 2.11 顺序表按元素修改 //按元素修改 int revise_element(Sqlist *list,datatype element1,datatype element2) { int sub=locate_element(list,element1); revise_sub(Sqlist *list,datatype element2); return SUCCESS; } 2.12去重 //去重 void deduplication(Sqlist *list) { //1.判断 if(NULL==list||list->len==0) { printf("craete error"); return NULL; } for(int i=0;i<list->len;i++) { for(int j=i;j<list->len;j++) { if(list->data[i]==list->data[j]) { delete_sub(list,j); j--; } } } } 2.13冒泡排序 //冒泡排序 void bubble_sort(Sqlist *list) { int temp; for(int i=0;i<list->len;i++) { for(int j=0;j<list->len-i-1;j++) { if(list->data[j]>list->data[j+1]) { int temp=list->data[j]; list->data[j]=list->data[j+1]; list->data[j+1]=temp; } } } int temp=list->data[i]; list->data[i]=list->data[min]; list->data[j]=temp; } 2.14选择排序 /选择排序 void select_sort(Sqlist *list) { int min; for(int i=0;i<list->len;i++) { int min=i; for(int j=i+1;j<list->len;j++) { if(list->data[j]>list->data[min]) { min=j; } } int temp=list->data[i]; list->data[i]=list->data[min]; list->data[j]=temp; } }

注:判断也可单独封装为一个函数。

标签:

数据结构-顺序表由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“数据结构-顺序表