顺序表的数组是足够大,当插入一个数据,我们可以把插入位置的数据和后面的数据都逐一后移,把要想插入的数据插入所想要插入的位置,当插入完数据后,要返回顺序表增加1后的长度。
#include <stdio.h>
#define N 50
int a[N]={0};
void CreateArr(int *a, int len) //创建顺序表
{
printf("请输入%d个整型数据:\n",len);
for(int i=0; i<len; i++)
scanf("%d",&a[i]);
printf("数据输入完毕.\n");
}
void PrintArr(int *a, int len) //输出顺序表
{
printf("输出数据.\n");
for(int j=0; j<len; j++)
printf("%-3d",a[j]);
printf("\n");
}
int InsertElement(int *a, int len, int data, int pos) //插入数据
{
if(pos<1 || pos>len+1)
{
printf("你插入的位置不合法.\n");
return len;
}
else
{
for(int i=len-1; i>=pos-1; i--)//被插入的位置的所有数据后移
{
a[i+1] = a[i];
}
a[pos-1] = data; //插入数据
return (len+1); //插入数据后顺序表长度增加1
}
}
void main()
{
int n;
int data, pos;
printf("请问你想输入几个整型数据.\n");
scanf("%d",&n);
CreateArr(a,n);
PrintArr(a,n);
printf("请输入你要插入的数据.\n");
scanf("%d",&data);
printf("请输入你要插入的位置.\n");
scanf("%d",&pos);
n=InsertElement(a,n,data,pos);
PrintArr(a,n);
}