/*初始条件:顺序线性表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 10voidList(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;}intmain(){char num[MAX];int j;char str;printf("请输入一串字母:");gets(num);printf("请输入你要插入的字母和位置:");scanf("%c %d",&str,&j);List(num,j,str);puts(num);}