1、1、已知顺序表 L,其中的元素按值递增有序排列,设计一个算法插入一个元素 X 后保持该顺序表的有序排列。要求算法的空间复杂度为。#include#define MAXSIZE 100#define OK 1#define ERROR 0typedef int ElemType;/定义线性表typedef structElemType elemMAXSIZE;int last;SeqList;/创建空表void Initlist(SeqList *L)L-last=-1;/输入递增有序顺序表void putseqList(SeqList *L,int n)int i;for(i=0;ielemi
2、);L-last=L-last+n; /求表长int LenList(SeqList *L)int Len;Len=L-last+1;return Len;/判断插入位置int PositionList(SeqList *L,int X)int j;for(j=0;jlast;j+) if(Xelemj) /如果找到位置就返回地址,否则知道循环结束再返回最后一个/地址 return j+1; /注意这里要加 1,下标 j 表示第 j+1 个元素,所以返回 j+1 return (L-last+1); /这里不能用 else,否则就属于 for 循环里面的了 /插入元素int InsList(S
3、eqList *L,int i,int e) int k;if(iL-last+2)printf(“插入位置不合理“);return(ERROR);if(L-last=MAXSIZE-1)printf(“表已满无法插入“);return(ERROR);for(k=L-last;k=i-1;k-)L-elemk+1=L-elemk;L-elemi-1=e;L-last+;return(OK);/输出元素int OutputSeqList(SeqList *L)int i;for(i=0;ilast;i+)printf(“%d,“,L-elemi);return(L-elemi);/主程序void
4、 main()int s,c;SeqList L;Initlist(printf(“请输入顺序表长度: “);scanf(“%d“,printf(“请输入递增顺序表: “);putseqList(LenList(printf(“表长为%dn“,LenList(printf(“请输入要插入的元素: “);scanf(“%d“,InsList(OutputSeqList(printf(“n“);2、从顺序表 L 中删除所有值为 X 的元素。void delete Value(SeqListfor(i=L.n-1;i=0;i- -) if(L.datai=value)for(j=i+1;j0) j=0;for(i=1;inext; While(pp-next=q-next;free(q); else p=p-next;