线性表——顺序表
2018-03-17 11:18
183 查看
顺序表的结构体类型
typedef struct { ElemType data[MAXSIZE]; //存放线性表的长度 int length; //记录顺序表的长度 }SqList;
顺序表运算的基本实现
顺序表的创建
void CreatList(SqList *&L, ElemType a[], int n) //由a中的n个元素建立顺序表 { int i=0,k=0; //k表示a中元素的个数,初始值为0 L=(SqList *)malloc(sizeof(SqList));//分配线性表的空间 while(i<n) { L->data[i]=a[i]; k++; j++; } L->length=k; //设置线性表的长度 }
顺序表的基本运算方法
1. 初始化线性表
void InitList(SqList *&L) { L=(SqList *)malloc(sizeof(SqList)); L->length=0; }
2. 销毁线性表
void DestoryList(SqList *&L) { free(L); }
3. 判断线性表是否为空
bool ListEmpty(Sqlist *L) { return(L->length==0); }
4. 插入数据元素
bool ListInsert(SqList *&L, ElemType e, int i) { int j; if(i<1||i>L->length+1) return false; i--; //将顺序表逻辑序号转化为物理序号 for(j=L->length;j>i;j--) //将data[i]及后面的元素后移一个位置 L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; return true; }
5. 删除数据元素
bool ListDelete(SqList *&L, ElemType &e,int i) { int j; if(i<1||i>L->length) return false; i--; //将顺序表的逻辑序号转化为物理序号 e=L->length[i]; //将要删除的元素保存到变量e中 for(j=i;j<l->length;j++) //将data[i]之后的元素向前移一步 { L->data[j]=L->data[j+1]; } L->length--; //将顺序表的长度减一 return true; }
6. 按元素值查找
int LocationElem(SqList *L,ElemType e) { int i=0; while(i<L->length&&L->data[i]!=e) i++; if(i>=L->length) return 0; //未找到元素时返回 0 else return i+1; //找到时返回的是逻辑序号 /* 注意:此时的 i 为顺序表中物理序号 及数组的下标 */ }
7. 求顺序表的长度
int ListLength(SqList *L) { return(L->length); }
8. 求线性表某个元素的值
bool GetElem(SqList *L,int i,ElemType &e) { if(i<1||i>L->length) return false; e=L->length[i-1]; //注意此时i的值为逻辑序号 (i-1)转为物理序号 return true; }
9.输出线性表
void DispList(SqList *&L ) { for(i=0;i<L->length;i++) { cout<<L->data[i]<<endl; } }
相关文章推荐
- C数据结构-线性表之顺序表
- python实现线性表顺序存储的插入操作
- 数据结构系列-线性表的顺序存储及基本操作
- PHP实现线性表的顺序存储实现
- 数据结构——线性表及线性表顺序存储
- 线性表之顺序表 图解和代码实现
- 增序顺序储存线性表的基本操作
- C _数据结构 _线性表的顺序存储
- 线性表的顺序存储实现
- 数据结构(2)线性表之顺序表
- Problem B: 调整表中元素顺序(线性表)
- 线性表中顺序表的合并
- c++模板类实现线性表顺序存储
- 已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序
- 线性表(顺序存储)结构与功能的简易实现
- 线性表之栈的顺序存储实现
- 线性表、栈、队列的的顺序储存和链式储存
- 线性表--顺序实现方式
- 线性表的顺序存储
- 数据结构—线性表的顺序表示与实现