概念:
顺序表是一种线性表,作为线性表的一种,它是用一段物理地址连续的存储单元依次存储数据元素的线性结构
模板:
typedef int T;
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 DeleteById(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 根据元素删除元素
int DeleteByVal(LinearList &L,T x){int Id=GetByVal(L,x);if(Id==-1)return 0;return DeleteById(L,Id);
}
//8 遍历顺序表
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";DeleteById(L,3);show(L);DeleteByVal(L,1);show(L);
}
简单实现增删改查