数剧结构--线性表-顺序表(02对顺序表的基本操作)
程序员文章站
2024-03-20 14:25:04
...
//插入
//顺序表的基本操作--插入
#define Maxsize 10;
typedef struct{
int data[Maxsize];
int length;
}sqlist;
bool InsertList(sqlist &L,int i,int e){
//对插入位置进行判断
if(i<1||i>L.length+1)
return false;
//看顺序表是否存满,存满就不能插入了
if(L.length>=Maxsize)
return false;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
int main(){
sqlist L;
InsertList(L,3,10);
return 0;
}
//删除
//顺序表的基本操作--删除
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}sqlist;
void InitList(sqlist &L){
for(int i=0;i<L.MaxSize;i++)
data[i]=0;
L.length=0;
}
bool DeleteList(sqlist &L,int i;int &e){
//判断删除位置是否合法
if(i<1||i>L.length)
return false;
e = data[i-1];
for(int j=i;j<L.length;j++)
data[j-1]=data[j];
L.length--;
return true;
}
int main(){
sqlist L;
InitList(L);
int e = -1;
if(DeleteList(L,3,e)){
printf("删除的第三个元素值为%d\n",e);
}
else
printf("删除失败\n");
return 0;
}
//按位查找
//顺序表的基本操作--按位查找
//基于静态分配
#define MaxSize 100
typedef struct {
int data[MaxSize];
int length;
}sqlist;
int GetElem(sqlist L,int i){
return L.data[i-1];
}
//基于动态分配
#define InitSize 10
typedef struct{
int *data;
int MaxSize;
int length;
}seqlist;
int GetElem(seqlist L,int i){
return L.data[i-1];
}
//按值查找
//顺序表的基本操作--按值查找
//基于静态分配
#define MaxSize 100
typedef struct {
int data[MaxSize];
int length;
}sqlist;
int LocateElem(sqlist L,int e){
for(int i=0;i<L.length;i++)
if(data[i]==e)
return i+1;
return 0;
}
//基于动态分配
#define InitSize 10
typedef struct{
int *data;
int MaxSize;
int length;
}seqlist;
int LocateElem(seqlist L,int e){
for(int i=0;i<L.length;i++)
if(data[i]==e)
return i+1;
return 0;
}