#define Maxsize 100 // 最大空间 typedef struct { int *elem; // 基地址; int length; // 顺序表的长度 } SqList; //L加&表示引用类型参数,也叫取地址,使函数内部的改变跳出函数仍然有效 //L不加&内部改变,跳出函数后无效 bool initialize(SqList &L)//构造一个空的顺序表L { L.elem = new int[Maxsize]; //为顺序表分配Maxsize个空间 if(!L.elem){//存储分配失败 return false; } L.length = 0; return true; } bool Createlist (SqList &L,int n/*数据的长度*/)//创建顺序表 { if(n >= Maxsize) { cout<<"请输入小于"<<Maxsize<<"的数"<<endl; return false; } for(int i = 0; i < n;i++){ cin>>L.elem[i]; L.length++; } return true; }
bool GetElem(SqList L,int i,int &e){//查找顺序表里的值 if(i < 1 || i > L.length){ //判断i值是否合理,若不合理,返回false return false; } e = L.elem[i-1];//第i-1的单元存储着第i个数据 return true; }
bool ListInsert(SqList &L,int i,int &e)//插入删除顺序表位置中的值 { if(i < 1 || i > L.length || L.length == Maxsize ){ //判断i值是否合理,若不合理,返回false return false; } for(int j = L.length-1;j >= i - 1;j--){ L.elem[j+1] = L.elem[j]; } L.elem[i-1] = e; L.length ++; return true; }
bool ListDelete_Sq(SqList &L,int i) //删除顺序表位置中的值 { if((i < 1) || (i > L.length)) return false;//i值不合法 for(int j = i;j <= L.length-1;j++){ L.elem[j-1] = L.elem[j];//被删除元素之后的元素后移一位 } L.length--;//表长减少1 return true; }
void print(SqList L)//输出顺序表 { for(int j = 0;j <= L.length - 1;j++) cout<<L.elem[j]<<" "; }
void DestroyList(SqList &L)//释放存储空间 { if (L.elem) delete[]L.elem; }
原文:https://www.cnblogs.com/Penqiang/p/13493308.html