C语言 线性表的顺序存储结构(顺序表实现)以及删除顺序表中值为e的全部元素

#include"bits/stdc++.h";
#define max 100
#define zengliang 20
/**

  • 顺序表
    */

typedef struct orderList{
int * a;
int length;
int capacity;
}List;
void initiaList(List &list){
list.a=(int*)malloc(sizeof(int)*max);
list.length=0;
list.capacity=max;
printf(“请输入你要初始化顺序表的表长:\n”);
int n;
scanf("%d",&n);
printf(“请输入表中的数据:\n”);
for(int i=0;i int t;
scanf("%d",&t);
list.a[list.length]=t;
list.length++;
}
}
void insertList(List &list,int e,int index){
index-- ;
if(index<0||index>=list.length){
printf(“index值不合法!\n”);
return ;
}
else
{
if(list.length>=list.capacity){ //存储空间已满,追加存储空间
int *newa=(int )malloc(sizeof(int)(list.capacity+zengliang));
if(!newa){
printf(“分配存储空间失败\n”);
return ;
}
else
{
list.a=newa;
free(newa);
list.capacity=list.capacity+zengliang;
}
}
for(int i=list.length-1;i>=index;i–)
list.a[i+1]=list.a[i];
list.a[index]=e;
list.length++;
}
}
void deleteList(List &list,int index,int &e){
index-- ;
if(index<0||index>=list.length){
printf(“index值不合法!\n”);
return ;
}
list.length-- ;
e=list.a[index];
for(int i=index;i list.a[i]=list.a[i+1];
}
}
void deleteAllelem(List &list,int e) //删除顺序表中值为e的所有元素
{
for(int i=0;i if(list.a[i]==e){
printf(“len=%d\n”,list.length);
list.length–;
for(int j=i;j list.a[j]=list.a[j+1];
}
}
else
i++;
}
}
void showList(List list){
for(int i=0;i printf("%d “,list.a[i]);
printf(”\n");
}
int main(){
List list;
initiaList(list);
int e,index;
showList(list);
printf(“请输入要插入的元素e以及要插入的位置index:\n”); //此部分为插入顺序表
scanf("%d %d",&e,&index);
insertList(list,e,index);
printf(“插入后的顺序表:\n”);
showList(list);

printf(“请输入想要删除的元素值:\n”); //此部分为删除顺序表中值为e的全部元素
int x;
scanf("%d",&x);
deleteAllelem(list,x);
printf(“删除后的顺序表:\n”);
showList(list);

// printf(“请输入要删除的元素的位置index:\n”); //此部分为删除指定位置的元素
// scanf("%d",&index);
// int t=0;
// deleteList(list,index,t);
// printf(“删除的元素为:%d\n”,t);
// printf(“删除后的顺序表:\n”);
// showList(list);

}

你可能感兴趣的:(C语言数据结构)