1 / 7
文档名称:

数据结构第二章课后答案.doc

格式:doc   大小:25KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构第二章课后答案.doc

上传人:书犹药也 2020/3/9 文件大小:25 KB

下载得到文件列表

数据结构第二章课后答案.doc

相关文档

文档介绍

文档介绍:,试写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性。解:intInsList(SeqList*L,intX){ inti=0,k;if(L->last>=MAXSIZE-1) { printf("表已满无法插入!"); return(ERROR); } while(i<=L->last&&L->elem[i]<X) i++; for(k=L->last;k>=I;k--) L->elem[k+1]=L->elem[k]; L->elem[i]=X;L->last++;return(OK);},从顺序表中删除自第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(j<=L->last) { elem[j-k]=elem[j]; j++; } L->last=L->last-k+1; returnOK; }}(整数)以递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于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->data<=mink) p=p->next; q=p->next; while(q->data<maxk&&q!=NULL) { p->next=q->next; free(q); q=p->next; } returnOK; }},即在原表的储存空间将线性表(a1,a1,…,an)逆置为(an,an-1,…,a1)。(1)以顺序表作存储结构。解:intReversePosition(SpListL){ intk,temp,len; intj=0; k=L->last; len=L->last+1; for(j;j<len/2;j++) { temp=L->elem[k-j]; elem[k-j]=elem[j]; elem[j]=temp; } returnOK;}(2)以单链表作存储结构。解:intReversePosition(LinklistL){ Node*NL,q,r; q=L; r=L; NL=L->next; if(NL==NULL) returnERROR; while(q->next!=NULL) { q=q->next; r->next=q; r=q; } while(NL->next!=r&&N