代码如下
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 //线性表的最大长度 #define ERROR 0 #define OK 1 typedef int ElemType; typedef struct { ElemType elem[MAXSIZE]; //线性表占用的数组空间 int last; //线性表最后一个元素在数组中的位置下标值,空表置为-1; }SeqList; int InsList(SeqList *LA, int i,ElemType e) //顺序表LA,插入位置i,插入元素e; { if (LA->last>MAXSIZE-2) { printf("表已满,无法插入"); return (ERROR); } if ((i<1)||(i>LA->last+2)) //判断插入位置是否合法 { printf("插入位置不合法"); return (ERROR); } for (int k = LA->last; k >= i - 1;k--) //为插入元素而移动位置 { LA->elem[k + 1] = LA->elem[k]; } LA->elem[i - 1] = e; LA->last++; return (OK); } int Locate(SeqList LA,ElemType e) //线性表LA;插入元素e;查找需要插入的位置; { int i=LA.last; while (LA.elem[i]>=e) i--; if (i<=LA.last) return(i+2); else return(-1); } int main() { int e,num; //元素个数num; 插入元素e; SeqList LA; scanf("%d",&num); LA.last=-1; LA.last+=num; for (int a=0;a<=LA.last;a++) { scanf("%d",&LA.elem[a]); } scanf("%d",&e); Locate(LA,e); InsList(&LA,Locate(LA,e), e); for (int b=0;b<=LA.last;b++) { printf("%d ",LA.elem[b]); } return 0; }