线性结构的特点线性表功能实现代码
线性结构的特点1.存在唯一的一个被称做“第一个”的数据元素。
2.存在唯一的一个被称做“最后一个”的数据元素。
3.除第一个之外,集合中每一个数据元素只有一个前驱。
4.除最后一个之外,集合中的每个数据元素只有一个后继。
线性表功能实现代码
实现功能分别为:尾插数据,头插数据,显示数据,尾删,头插,按位置插入,查找数据,删除数据,清除数据表,销毁数据表
#include#include #include #define SEQLIST_INIT_SIZE 5 //线性表存储空间的初始分配量 typedef int ElemType; typedef struct{ ElemType *base; //指向ElemType类型数组指针 int listSize; //数组最大容量 int length; //数组长度 }SeqList; void InitSeqList(SeqList *list){ list->base = (ElemType *)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE); assert(list->base !=NULL); list->listSize = SEQLIST_INIT_SIZE; list->length = 0; } void push_back(SeqList *list,ElemType x){ if(list->listSize==list->length){ printf("顺序表已满,不能尾插!n"); return; } list->base[list->length] = x; list->length++; } void push_front(SeqList *list,ElemType x){ if(list->listSize==list->length){ printf("顺序表已满,不能头插!n"); return; } for(int i=list->length;i>0;i--){ list->base[i] = list->base[i-1]; } list->base[0] = x; list->length++; } void show_list(SeqList *list){ for(int i=0;i length;i++) printf("%d ",list->base[i]); printf("n"); } void pop_back(SeqList *list){ if(list->length==0) printf("顺序表为空,不能尾删!"); list->length--; } void pop_front(SeqList *list){ if(list->length==0) printf("顺序表为空,不能头删!"); for(int i=0;i length-1;i++){ list->base[i]=list->base[i+1]; } list->length--; } void insert_pos(SeqList *list,int pos,ElemType x){ if(pos<0||pos>list->length) printf("插入位置非法!n"); return; for(int i=list->length;i>pos;i--){ list->base[i]=list->base[i-1]; } list->base[pos]=x; list->length++; } int find(SeqList *list,ElemType key){ for(int i=0;i length;i++){ if(list->base[i]==key) return i; } return -1; } void delete_value(SeqList *list,ElemType key){ int pos = find(list,key); if(pos == -1){ printf("要删除的数据不存在.n"); return; } for(int i=pos;i length-1;i++){ list->base[i] = list->base[i+1]; } list->length--; } void clear(SeqList *list){ list->length = 0; } void destroy(SeqList *list){ free(list->base); list->base = NULL; list->length = 0; list->listSize = 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)