概念:
顺序表是一种线性表,作为线性表的一种,它是用一段物理地址连续的存储单元依次存储数据元素的线性结构
模板:
using T=int;
typedef struct Node{
T *data;
int last;
int MaxSize;
}*LinearList;
//1 初始化顺序表
int InitList(LinearList &L,int Size){
L=new Node();
L->data=new T[Size];
if(L->data){
L->last=-1;
L->MaxSize=Size;
return 1;
}
return 0;
}
//2 获取顺序表的长度
int GetLen(LinearList &L){
return L->last+1;
}
//3 根据下标获取元素
T GetById(LinearList &L,int Id){
if(Id<1||Id>L->last+1){
cout<<"位置不正确\n";
return 0;
}
return L->data[Id-1];
}
//4 根据值查询下标
int GetByVal(LinearList &L,T x){
for(int i=0;i<=L->last;i++)
if(L->data[i]==x)return i+1;
return -1;
}
//5 插入元素
int InsertList(LinearList &L,int Id,T x){
if(Id<1||Id>L->last+2){
cout<<"插入位置不正确\n";
return 0;
}
if(L->MaxSize==L->last+1){
cout<<"顺序表已满\n";
return 0;
}
for(int i=L->last;i>=Id-1;i--)L->data[i+1]=L->data[i];
L->data[Id-1]=x;
L->last++;
return 1;
}
//6 删除元素
int DeleteList(LinearList &L,int Id){
if(Id<1||Id>L->last+1){
cout<<"删除位置不正确\n";
return 0;
}
for(int i=Id-1;i<=L->last;i++)L->data[i]=L->data[i+1];
L->last--;
return 1;
}
//7 遍历顺序表
void show(LinearList &L){
for(int i=0;i<=L->last;i++)
cout<<L->data[i]<<" \n"[i==L->last];
}
void solve(){
LinearList L;
InitList(L,10);
for(int i=1;i<=5;i++)InsertList(L,i,i);
show(L);
cout<<GetById(L,2)<<'\n';
cout<<GetByVal(L,3)<<"\n";
DeleteList(L,3);
show(L);
}
简单实现增删改查