> 技术文档 > 数据结构-顺序表

数据结构-顺序表

1.heah.h

#ifndef HEAD_H_#define HEAD_H_#include #include #include #define maxsize 10enum A{SUCCESS,FLASE=-1};typedef int type;typedef struct {type arr[maxsize];type len;}SQlist;SQlist * create();int input(SQlist *list,type element);int output(SQlist *list);int delete(SQlist *list,type n);int insert_sub(SQlist *list,type n,type element);int delete_sub(SQlist *list,type sub);int update_sub(SQlist *list,type sub,type element);int search_sub(SQlist *list,type sub);int delete_element(SQlist *list,type element);int search_element(SQlist *list,type element);int update_element(SQlist *list,type element,type element0);int QUCHONG(SQlist *list);int sort(SQlist *list);SQlist* free_p(SQlist *list);#endif

2.test.c

#include \"head.h\"SQlist *create(){SQlist *list=((SQlist*)malloc(sizeof(SQlist)));memset(list->arr,0,sizeof(list->arr));list->len=0;return list;}int input(SQlist *list,type element){if(list==NULL||list->len>maxsize){return FLASE;}list->arr[list->len]=element;list->len++;return SUCCESS;}int output(SQlist *list){if(list==NULL||list->len>mSQlist* free_p(SQlist *list)SQlist* free_p(SQlist *list)axsize){return FLASE;}for(type i=0;ilen;i++){printf(\"%d \",list->arr[i]);}printf(\"\\n\");return SUCCESS;}int delete(SQlist *list,type n){if(list==NULL||list->len>maxsize){return FLASE;}for(type i=0;iarr[list->len]==0;list->len--;}return SUCCESS;}int insert_sub(SQlist *list,type sub,type element){if(list==NULL||list->len>maxsize||sublist->len){return FLASE;}list->len++;for(type i=list->len;i>sub;i--){list->arr[list->len+1]=list->arr[list->len];}list->arr[sub]=element;return SUCCESS;}int delete_sub(SQlist *list,type sub){if(list==NULL||list->len>maxsize||sublist->len){return FLASE;}for(type i=sub;ilen;i++){list->arr[i]=list->arr[i+1];}list->arr[list->len]=0;list->len--;}int update_sub(SQlist *list,type sub,type element){if(list==NULL||list->len>maxsize||sublist->len){return FLASE;}list->arr[sub]=element;return SUCCESS;}int search_sub(SQlist *list,type sub){if(list==NULL||list->len>maxsize||sublist->len){return FLASE;}printf(\"在下标%d处的元素是%d\\n\",sub,list->arr[sub]);return SUCCESS;}int delete_element(SQlist *list,type element){if(list==NULL||list->len>maxsize){return FLASE;}for(type i=0;ilen;i++){if(list->arr[i]==element){delete_sub(list,i);i--;}}return SUCCESS;}int search_element(SQlist *list,type element){if(list==NULL||list->len>maxsize){return FLASE;}for(type i=0;ilen;i++){if(list->arr[i]==element)printf(\"元素%d的下标是%d\\n\",element,i);}return SUCCESS;}int update_element(SQlist *list,type element,type element0){if(list==NULL||list->len>maxsize){return FLASE;}for(type i=0;ilen;i++){if(list->arr[i]==element){list->arr[i]=element0;}}return SUCCESS;}int QUCHONG(SQlist *list){if(list==NULL||list->len>maxsize){return FLASE;}for(type i=0;ilen;i++){for(type j=i+1;jlen;j++){if(list->arr[i]==list->arr[j]){delete_sub(list,j);j--;}}}return SUCCESS;}int sort(SQlist *list){type temp;if(list==NULL||list->len>maxsize){return FLASE;}for(type i=0;ilen;i++){for(type j=i;jlen;j++){if(list->arr[i]>list->arr[j]){temp=list->arr[i];list->arr[i]=list->arr[j];list->arr[j]=temp;}}}return SUCCESS;}SQlist* free_p(SQlist *list){if(list==NULL){return NULL;}free(list);list=NULL;return list;}

3.main.c

#include \"head.h\"int main(int argc,const char *argv[]){SQlist *list=create();type n,element,sub,element0;printf(\"插入多少个元素\\n\");scanf(\"%d\",&n);for(type i=0;i<n;i++){printf(\"输入第%d个元素\\n\",i+1);scanf(\"%d\",&element);input(list,element);}output(list);printf(\"尾删几次\\n\");scanf(\"%d\",&n);delete(list,n);output(list);printf(\"在哪个下标插入哪个元素\\n\");scanf(\"%d %d\",&sub,&element);insert_sub(list,sub,element);output(list);printf(\"在哪个下标删除元素\\n\");scanf(\"%d\",&sub);delete_sub(list,sub);output(list);printf(\"在哪个下标替换哪个元素\\n\");scanf(\"%d %d\",&sub,&element);update_sub(list,sub,element);output(list);printf(\"查询下标几处的元素\\n\");scanf(\"%d\",&sub);search_sub(list,sub);printf(\"输入需要删除的元素\\n\");scanf(\"%d\",&element);delete_element(list,element);output(list);printf(\"输入想要查找的元素\\n\");scanf(\"%d\",&element);search_element(list,element);printf(\"输入想要修改的元素和修改后的元素\\n\");scanf(\"%d %d\",&element,&element0);update_element(list,element,element0);output(list);QUCHONG(list);printf(\"去重后:\\n\");output(list);printf(\"排序后:\\n\");sort(list);output(list);free_p(list);}