#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINSERT 10
typedef struct{
int *elem;
int length;//记录链表当前长度
int list_size;//记录链表的总容量
}SqList;
SqList init_list(SqList L){
L.elem=(int)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem){
exit(0);
}
L.length=0;
L.list_size=LIST_INIT_SIZE;
return L;
}
SqList input_list(SqList L,int n){
if(n>L.list_size){
exit(0);
}
int i;
for( i = 0 ; i < n ; i++){
scanf("%d",&L.elem[i]);
}
L.length=n;
return L;
}
void output_list(SqList L){
int i;
for( i = 0 ; i < L.length ; i++ ){
printf("%d ",L.elem[i]);
}
printf("\n");
}
SqList Insert_List(int index,int num,SqList L){
int *newbase;
int init_size = L.list_size;
if(index < 0 || index > L.length+1) {
exit(0);
}
if(L.length+1>L.list_size){
newbase = (int *) realloc(L.elem,(L.list_size+LISTINSERT)*sizeof(int));
L.elem=newbase;
L.list_size=init_size + LISTINSERT;
}
if(!newbase){
exit(0);
}
int i;
for(i = L.length-1;i >= index - 1 ; i-- ){
L.elem[i+1]=L.elem[i];
}
L.elem[index - 1]=num;
L.length++;
return L;
}
SqList Delete_List(int index,SqList L){
if(index < 0 || index > L.length){
exit(0);
}
int i;
for(i = index ; i < L.length ; i++) {
L.elem[i-1]=L.elem[i];
}
L.length--;
return L;
}
int main(){
SqList list;
list=init_list(list);
int n,i;
scanf("%d",&n);
list=input_list(list,n);
output_list(list);
printf("请输入需要插入的位置index和数值num\n");
int index,num;
scanf("%d %d",&index,&num);
list=Insert_List(index,num,list);
output_list(list);
printf("请输入要删除的元素的位置index\n");
scanf("%d",&index);
output_list(Delete_List(index,list));
return 0;
}
线性表的增加和删除
最新推荐文章于 2023-03-10 22:24:44 发布