4已知顺序表L递增有序,试写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性
解:intInsList(SeqList*L,intX){inti=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个元素
解:intLDel(Seqlist*L,inti,intk){if(i=1||(i+k>L->last+1)){printf("输入的i,k值不合法");return(ERROR);}elseif(i+k==L->last+2){L->last=i-2;returnOK;}else{j=i+k-1;while(jlast){elem[j-k]=elem[j];j++;}L->last=L->last-k+1;returnOK;}}2
6已知线性表中的元素(整数)以递增有序排列,并以单链表作存储结构
试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个变量,他们的值为任意的整数)
解:intDelete(Linklist,intmink,intmaxk){Node*p,*q;p=L;while(p->next
=NULL)p=p->next;if(mink>=maxk||L->next->data>=maxk||mink+1=maxk){printf("参数不合法
");returnERROR;}else{while(p->next->datanext;q=p