数据结构综合算法题.doc

数据结构综合算法题.doc

ID:51908288

大小:31.00 KB

页数:2页

时间:2020-03-18

数据结构综合算法题.doc_第1页
数据结构综合算法题.doc_第2页
资源描述:

《数据结构综合算法题.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、综合算法题1、已知两个链表A和B分别表示两个集合,其元素递增排列。写一算法,求A与B的交集,其元素也递增排列,并存放于A链表中。voiddiffence(LinkList&La,LinkListLb){//带头结点的单链表La,Lb,其元素递增排列,求其交集,并存放与La中p=La;q=Lb-->next;while(p-->next){while(p-->next-->data>q-->data)q=q-->next;//直到Lb中第一个不小于该结点的元素值止if(p-->next-->data==q-->data)p=p-->next;el

2、se{r=p-->next;p-->next=r-->next;free(r);}例:A:3,4,5,6,7B:1,4,6,8交集:4,6}//while(p-->next)}//diffence2.已知(k1,k2,……,kp)是堆,则可以写一个时间复杂度为O(logn)的算法,将(k1,k2,……,kp,kp+1)调整为堆,试编写“从p=1起,逐个插入建堆”的算法,并讨论由此方法建堆的时间复杂度。(10分)VoidcreateHeap(HeapType&H,intn){(1分)//从第一个元素起逐步插入建一个大顶堆for(p=2;p<=n;

3、++p){//此时从H.r[1]……H.r[p]已是大顶堆j=p;for(i=j/2;i<=1;i=i/2){if(LT(H.r[i].key,H[j].key)H.r[i]ß>H.r[j];j=i;}//for}//for}//CreateHeap时间复杂度:当H.r[1]……H.r[p-1]已是大顶堆时,插入第p个元素,将其调整为堆,实际上是走了一条从叶子到根的路径,需比较次,故共需比较:++……+

4、替的冒泡排序算法。voidBubbleSort2(inta[],intn)//相邻两趟向相反方向起泡的冒泡排序算法{change=1;low=0;high=n-1;//冒泡的上下界while(lowa[i+1]){a[i]<-->a[i+1];change=1;}//有交换,修改标志changehigh--;//修改上界for(i=high;i>low;i--)//从下向上起泡if(a[i]

5、a[i]<-->a[i-1];change=1;}low++;//修改下界}//while}//BubbleSort2[算法讨论]题目中“向上移”理解为向序列的右端,而“向下移”按向序列的左端来处理。4.编程求以孩子—兄弟表示法存储的森林的叶子结点数。要求描述结构。[题目分析]当森林(树)以孩子兄弟表示法存储时,若结点没有孩子(fch=null),则它必是叶子,总的叶子结点个数是孩子子树(fch)上的叶子数和兄弟(nsib)子树上叶结点个数之和。typedefstructnode{ElemTypedata;//数据域structnode*fch

6、,*nsib;//孩子与兄弟域}*Tree;intLeaves(Treet)//计算以孩子-兄弟表示法存储的森林的叶子数{if(t)if(t->fch==null)//若结点无孩子,则该结点必是叶子return(1+Leaves(t->nsib));//返回叶子结点和其兄弟子树中的叶子结点数elsereturn(Leaves(t->fch)+Leaves(t->nsib));//孩子子树和兄弟子树中叶子数之和}//结束Leaves

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。