顺序表的插入与删除操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L.length--;
//顺序表的插入和删除操作
#include
#include
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
SqList InitList_Sq(int n){ //创建一个有n个元素的顺序表
int i;
int e;
int * q;
SqList L;
L.elem=(int *)malloc(1000*sizeof(int));
if(!L.elem) exit(-2);
L.length=n;
L.listsize=1000;
for(i=0;i
scanf("%d",&e);
*q=e;
}
return L;
}
void Print_List(SqList L){ //输入顺序表L的每个元素
int i;
for(i=0;i
}
SqList Insert_List(SqList L, int i, int e){ //在顺序表L的第i个位置插入数据e
int * p;
int * q;
if(i>L.length+1) printf("out!");
else{
if(L.length+1>L.listsize) L.elem=(int *)realloc(L.elem, (L.listsize+10)*sizeof(int));
if(!L.elem) exit(-2);
p=&L.elem[L.length-1];
q=&L.elem[i-1];
for(;p>q;p--) *(p+1)=*p;
*(p+1)=e;
L.length++;
}
return L;
}
SqList Delete_List(SqList L, int i){ //删除顺序表L的第i个元素
int * p;
int * q;
if(i>L.length) printf("out!");
else{
p=&L.elem[L.length-1];
q=&L.elem[i-1];
for(;q
}
return L;
}
void main(){
SqList L1=InitList_Sq(5);
Print_List(L1);
L1=Insert_List(L1,3,4);
Print_List(L1);
L1=Delete_List(L1,3);
Print_List(L1);
}