1.创建一个线性表
线性表,就是由他的元素和它的长度两个主要的元素组成
下面是创建线性表的一个很常用的模板
const int MaxSize=1e5; typedef struct { ElemType elem[MaxSize]; int length; } SqList;
2.然后就是线性表的基本操作,包括他的初始化,求长度,求特定位置的元素是什么
//线性表的初始化 int InitList Sq(SqList &L) { L.elem=new ElemType[MaxSize];//为顺序表分配空间 if(!L.elem)exit(0);//分配失败 L.length=0; return 1; }
//销毁线性表 void DestroyList(SqList &L) { if(L.elem)delete L.elem; } //清空线性表 void ClearList(SqList &L) { L.length=0;//线性表还是在的,但是清空元素 } //线性表长度 int ListLength(SqList &L) { return (L.length); } //判断顺序线性表是否为空 bool IsEmpty(SqList &L) { if(L.length==0)return 1; else return 0; } //获取第i个元素的数据元素的内容 int GetElem(SqList L,int i,ElemType &e) { if(i<1||i>L.length)return 0; e=L.elem[i-1]; return 1; } //查找特定元素的位置返回其位置 int LocateElem(SqList &L,ElemType &e) { for(int i=0; i<L.length; i++) if(L.elem==e) return i+1; else return 0; }
3.插入,删除和查找
//线性表的插入操作 int ListInsert(SqList &L,int i,ElemType &e) { //考虑插入位置是否合法,并且判断线性表是否已经满了 if(i<1||i>L.length||i>MaxSize)return 0; L.elem[i-1]=e; for(int j=L.length-1; j>=i; j--) { L.elem[j+1]=L.elem[j]; } //注意要倒过来这样写哈哈哈哈,反正我觉得这样写比较好 L.length+=1; return 1; } //顺序表的删除操作 int ListDelete(SqList &L,int i,ElemType &e) { if(i<1||i>L.length)return 0; //首先判断这个给的地址是否合法 e=L.elem[i-1];//把这个要删除的存在e里头,这一步删掉也可以 for(int j=i-1;j<=L.length;j++) L.elem[i-1]=L.elem[i]; L.length++; return 1; }
//获取第i个元素的数据元素的内容 int GetElem(SqList L,int i,ElemType &e) { if(i<1||i>L.length)return 0; e=L.elem[i-1]; return 1; } //查找特定元素的位置返回其位置 int LocateElem(SqList &L,ElemType &e) { for(int i=0; i<L.length; i++) if(L.elem==e) return i+1; else return 0; }