- 实现顺序表的定义并创建顺序表。
- 实现线性表顺序存储结构下元素的插入操作。
- 实现线性表顺序存储结构下元素的删除操作。
- 实现线性表顺序存储结构下取元素操作。
//数据结构构建一个线性表 #include <iostream> using namespace std; typedef int ElemType; typedef int Status; #define M 100 #define ok 1 #define false 0 typedef struct{ ElemType *elem; int length; }sqlist; sqlist L; void Initlist(sqlist &L) { L.elem =new ElemType[M];//用new创建一个新的空间 if(!L.elem ); } void createlist(sqlist &L)//创建线性表 { int i; cout<<"请输入线性表的长度"<<endl; cin>>L.length; cout<<"请输入线性表中的元素"<<endl; for(i=0;i<L.length;i++) cin>>L.elem[i]; } void OutputList(sqlist L)//输出线性表中的元素 { int i; cout<<"线性表中的元素为:"<<endl; for(i=0;i<L.length;i++) cout<<L.elem[i]<<"\t"; } Status ListInsert_Sq(sqlist &L, int i, ElemType e)//表示在线性表L中的第i个位置插入元素e { //先判断插入的位置是否合理 if(i<1||i>L.length+1) { cout<<"插入失败,请重新输入位置插入"<<endl; return false; } else cout<<"插入成功,插入后的元素为"<<endl; //判断表的长度是否大于限定值 if(L.length==M) { cout<<"线性表的存储空间已存满"<<endl; return false; } /*由于插入了新元素,原来线性表中的元素位置发生了改变,所以此时需要引入变量j来控制位置的移动*/ int j; /*线性表插入时元素位置从后面先开始移动,因此j要从L.length-1的位置往前移动,直到第i个位置,即最终j的取值范围为j>=i-1*/ for(j=L.length-1;j>=i-1;j--) L.elem[j+1]=L.elem[j];//插入元素后长度变长,因此要把第i个元素之后的位置加1 /*此时第i个位置已经腾出来,因此需要在第i个位置上插入元素e,注意第i个位置下标为i-1*/ L.elem[i-1]=e;//此时线性表的长度相应增加 L.length++; return ok; } Status ListDelete_Sq(sqlist &L, int i) { //先判断删除的位置是否符合要求 int j; if(i<1||i>L.length) { cout<<"删除失败,请重新输入位置删除"<<endl; return false; } else cout<<endl<<"删除成功,删除后剩余的元素为"<<endl ; for(j=i;j<=L.length;j++) L.elem[j-1]=L.elem[j]; int e= L.elem[j-1]; L.length--; for(j=0;j<L.length;j++) cout<<L.elem[j]<<"\t"; return e; } Status GetElem(sqlist L, int i, ElemType &e) //取值 { int j; if(i<1||i>L.length) { cout<<"取出失败,请重新输入位置取出"<<endl; return false; } else cout<<"取出成功,取出的元素为" <<endl; e=L.elem[i-1]; cout<<e<<endl; return ok; } int LocateElem_Sq(sqlist L, ElemType e)//查找 { int i; for(i=0;i<L.length;i++) { if(L.length=e) return i+1; } return false; } int main(){ int i; int e; Initlist(L); createlist(L); OutputList(L); ListInsert_Sq(L,9,10); if( ListInsert_Sq(L,3,67)) { for(i=0;i<L.length;i++) cout<<L.elem[i]<<"\t"; } ListDelete_Sq(L,6); ListDelete_Sq(L,8); GetElem(L,6,e); LocateElem_Sq(L,35); LocateElem_Sq(L,42); return 0; }
数据结构之顺序表的构建
最新推荐文章于 2023-07-09 15:34:17 发布