顺序表的插入与删除操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


//顺序表的插入和删除操作

#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;iq=&L.elem[i];
scanf("%d",&e);
*q=e;
}
return L;
}

void Print_List(SqList L){ //输入顺序表L的每个元素
int i;
for(i=0;iprintf("\n--------------------------- \n\n\n");
}

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(;qL.length--;
}
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);

}


相关文档
最新文档