数据结构:顺序表插入
/*初始条件:顺序线性表L已存在
操作结果:在L的第i个位置之前插入新的数据元素e,L的长度加一
*/
Status ListInsert(SqList *L,int i,ElemType e)
{
int k;
if(L ->length == MAXSIZE)//顺序表已经满了
{
return ERROR;
}
if(i < 1 || i > L ->length)
{
return ERROR;
}
if(i <= L -> length)
{
for(k = L -> length;k >= i - 1;k --)//将要插入位置后数据元素向后移动一位
{
L ->data[k + 1] = L -> data[k];
}
}
L -> data[k - 1] = e;
L ->length ++;
return OK;
}
C语言实现
#include <stdio.h>
#include <string.h>
#define MAX 10
void List(char *L,int i,char e)
{
int k;
int x;
x = strlen(L);
if(x == MAX)
{
printf("数组已满无法插入\n");
exit(0);
}
if(i < 1 || i > x)
{
printf("i的范围超限");
exit(0);
}
if(i <= x)
{
for(k = x;k >= i - 1;k --)
{
L[k + 1] = L[k];
}
}
L[i - 1] = e;
}
int main()
{
char num[MAX];
int j;
char str;
printf("请输入一串字母:");
gets(num);
printf("请输入你要插入的字母和位置:");
scanf("%c %d",&str,&j);
List(num,j,str);
puts(num);
}
转载:https://blog.csdn.net/qq_43728862/article/details/104520621
查看评论