线性表之顺序存储,基本操作
2016-12-19 00:00
501 查看
/* 九大基本操作(不同的存储结构实现的代码不同) 此处用一维数组的动态分配: InitList(&L);//初始化表, Length(L); LocateElem(L,e); GetElem(L,i); ListInsert(&L,i,e); ListDelete(&L,i,&e); PrintList(L); Empty(L); DestoryList(&L); */ /*静态分配的结构 #define MaxSize 50 typedef struct{ int data[MaxSize]; int length; }SqList; */ #include<cstdio> #include<cstdlib> #include<cmath> #define InitSize 100//动态分配的结构 #define AddSize 20//增加的空间个数 typedef struct{ int* data; int MaxSize,length;//数组的最大容量,当前个数 }SeqList; SeqList* InitList(SeqList &L){ L.data = (int*)malloc(sizeof(int)*InitSize); if(L.data == NULL) return NULL; L.MaxSize = InitSize; L.length = 0; return &L; } int Length(SeqList L){ return L.length; } int LocateElem(SeqList L,int e){//返回e在数组中的下标 int i = 0; while(i<=L.length&&L.data[i] != e){ i++; } if(i>L.length){ exit(EXIT_FAILURE); } return i; } int GetElem(SeqList L,int i){//获取第i个元素 if(i<1||i>L.length+1) exit(EXIT_FAILURE); return L.data[i-1]; } SeqList* ListInsert(SeqList &L,int i,int e){//在第i个位置插入 if(i<1||i>L.length+1) exit(EXIT_FAILURE); if(L.length >= L.MaxSize) { L.data = (int*)realloc(L.data,sizeof(int)*(InitSize+AddSize)); if(L.data == NULL) exit(OVERFLOW); L.MaxSize = InitSize+AddSize; } for(int j = L.length-1;j>=i-1;j--) L.data[j+1] = L.data[i]; L.data[i-1] = e; ++L.length; return &L; } SeqList* ListDelete(SeqList &L,int i,int &e){//删除第i个元素的位置 if(i<1||i>L.length) exit(EXIT_FAILURE); e = L.data[i-1]; for(int j=i-1;j<L.length-1;j++) L.data[j]=L.data[j+1]; --L.length; return &L; } void PrintList(SeqList L){ int i = 0; while(i<L.length){ printf("%d ",L.data[i]); } printf("\n"); } bool Empty(SeqList L){ if(L.length == 0) return true; else return false; } bool DestoryList(SeqLisrt &L){ for(int i=0;i<L.length;i++) free(L); } main(){ SeqList SL; SeqList* L = InitList(SL); printf("%d",L); return 0; }
相关文章推荐
- 学习笔记---线性表的基本操作---顺序存储(C语言)
- 线性表顺序存储基本操作
- 线性表的顺序存储格式基本操作:初始化、插入、删除、查找、打印
- 线性表顺序存储的基本操作
- 线性表_顺序存储/基本操作
- 数据结构系列-线性表的顺序存储及基本操作
- 线性表的顺序存储的基本操作
- 顺序线性表的定义与基本操作
- 队列的顺序存储及其基本操作
- 二叉树的顺序存储与基本操作
- 线性表----循环队列(顺序表示)的基本操作
- 顺序线性表的基本操作算法
- 稀疏矩阵的三元组顺序表存储表示及基本操作
- 栈的顺序存储基本操作
- 数据结构 串(顺序存储)的基本操作
- 队列的顺序存储及其基本操作
- 队列的顺序存储的基本操作.....
- 线性表链式存储-单链表的基本操作
- 二叉树基本操作实现(二叉树的顺序存储)
- 线性表----顺序栈的基本操作