插入和删除(线性表)
#include<stdio.h>
#define MAXSIZE 100
int list[MAXSIZE];
int n;
/*插入表元素*/
int sq_insert(int list[],int *p_n,int i,int x)
{
int j;
if(i<0||i>*p_n) return 1;
if(*p_n==MAXSIZE) return 2;
for(j=*p_n+1;j>i;j--)
list[j]=list[j-1];//
list[j]=x;//
return 0;
}
/*删除表元素*/
int sq_delete(int list[],int *p_n,int i)
{
int j;
if(i<0||i>*p_n) return 1;
for(j=i+1;j<=*p_n+1;j++)
list[j-1]=list[j];
*p_n=*p_n-1;
return 0;
}
void main()
{
int i,x,temp;
printf("请输入表的个数n=\n");
scanf("%d",&n);
n=n-1;
for(i=0;i<=n;i++)
{
printf("list[%d]=",i);
scanf("%d",&list[i]);
}
printf("插入前的线性表\n");
for(i=0;i<=n;i++)
printf("%d ",list[i]);
printf("\n");
printf("请输入要插入的位置\n");
scanf("%d",&i);
printf("请输入要插入的值\n");
scanf("%d",&x);
temp=sq_insert(list,&n,i-1,x);
switch(temp)
{
case 0:printf("插入成功\n");
printf("插入后的线性表为:\n");
for(i=0;i<=n+1;i++)
printf("%d ",list[i]);
n=n+1;
printf("\n");
break;
case 1:
case 2:printf("插入未成功\n");
break;
}
printf("删除前的线性表\n");
for(i=0;i<=n;i++)
printf("%d ",list[i]);
printf("\n");
printf("请输入要删除的位置\n");
scanf("%d",&i);
temp=sq_delete(list,&n,i-1);
switch(temp)
{
case 0:printf("删除成功\n");
printf("删除后的线性表为:\n");
for(i=0;i<=n;i++)
printf("%d ",list[i]);
printf("\n");
break;
case 1:printf("删除未成功\n");
break;
}
}