4 已知顺序表L 递增有序,试写一算法,将X 插入到线性表的适当位置上,以保持线性表的有序性
解: int InsList(SeqList *L,int X) { int i=0,k; if(L->last>=MAXSIZE-1) { printf("表已满无法插入
"); return(ERROR); } while(ilast&&L->elem[i]last;k>=I;k--) L->elem[k+1]=L->elem[k]; L->elem[i]=X; L->last++; return(OK); } 2
5 写一算法,从顺序表中删除自第 i 个元素开始的k 个元素
解: int LDel(Seqlist *L,int i,int k) { if(i=1||(i+k>L->last+1)) { printf("输入的i,k 值不合法"); return(ERROR); } else if(i+k==L->last+2) { L->last=i-2; return OK; } else { j=i+k-1; while(jlast) { elem[j-k]=elem[j]; j++; } L->last=L->last-k+1; return OK; } } 2
6 已知线性表中的元素(整数)以递增有序排列,并以单链表作存储结构
试写一高效算法,删除表中所有大于mink 且小于maxk 的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink 和maxk 是给定的两个变量,他们的值为任意的整数)
解: int Delete(Linklist,int mink,int maxk) { Node *p,*q; p=L; while(p->next
=NULL) p=p->next; if(mink>=maxk||L->next->data>=max