〖微笑天使收集整理QQ:84024257〗 一、 单选题:判断下列各小题叙述的正误。对,在题号前的括号内填入“√ ”;错,在题号前填入“ ×”。(每小题3分,共24分) ( )(1)有n个结点的不同的二叉树有n!棵。
int unknown(BinTreNode * t){ //指针T是二叉树的根指针。 if(t==NULL)return-1; elseif(unknown(t—leftChild)>=unknown(t—rightChild)) return 1+unknown(t—leftChild)); elsereturn 1+unkuown(t—rightChild); }
1.设已有12个不等长的初始归并段,各个归并段的长度(包括记录数)分别为 RUN1(25),RUN2(13),RUN3(04),RUN4(55),RUN5(30),RUN6(47),RUN7(19),RUN8(80),RUN9(76),RUN10(92),RUN11(55),RUN12(89) 若采用的是4路平衡归并排序,试画出其最佳归并树,并计算每趟归并时的读记录数。(括号内即为该归并段包含的记录数)
搜索不成功时的平均搜索长度为:ASLunsucc=
3.画出在一个初始为空的AVL树中依次插入3,1,4,6,9,8,5,7时每一步插入后AVL树的形态。若做了某种旋转,说明旋转的类型。然后,给出在这棵插入后得到的AVL树中删去根结点后的结果。
以知一组元素为(46,25,78,62,12,37,70,29),试画出按元素排列次序插入生成的一棵二叉搜索树。
设有一个表头为first的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点按逆序链接。
下面给出的算法是建立AOV网络并对其进行拓扑排序的算法,其中有多个语句缺失。 Void Graph : : TopologicalSort(){ Edge * p , q ; int I , j , k ; For (I=0; I<n; I++){ NodeTable[I].adj=NULL; 1、 ; } cin>> j >> k ; while ( j&& k){ p=new Edge ( k ) ; p—link=NodeTable[ j ].adj ; 2、 ; Count [ k ] ++ ; Cin >> j >> k ; } int top=-1 ; for ( I=0, I<n ; I++) if (count[ I ]=0 ) { count[ I ]=top ; 3、 } for ( I=0 ; I< n ; I++ ) if (top = -1 ) { cout << “Network has a cycle” << endl ; return ; } else { j= top; 4、 ; cout <<NodeTable[ j ].data <<endl ; q=NodeTable[ j ].adj ; while ( q ) { k= q—dest ; if (----count [ k ] == 0 count [ k ] = top ; top = k ; } 5、 ; } } }
1、 2、 3、 4、 5、 (2)请给出对于下面AOV网络,使用上述算法进行拓扑排序的结果,以及在count数据库中建立的链式栈的变化。(top是栈顶指针)(5分) B -------------------------------------------------------------------------------- C
A B C D E F
一、单选题 解答 (1)×(2)√(3)×(4)√(5)×(6)√(7)×(8)×
解答:计算二叉树的高度(深度)。
1、 解答: 构造最佳归并树 因为(12-1)/(4-1)=2,所以需要补充4-2-1=1个空归并段,命名为RUN(0)。依此构造4叉霍夫曼树:
此即最佳归并树。第一趟读记录数为36,第二趟读记录数为138+266=404,第三趟读记录书数为89+92+138+266=585。
设散列表的长度 m=13;散列函数为H(K)=K mod m,给定的关键码序列为19,14,23,01,68,20,84,27,55,11,则有 H(19)=6 ,成功; H(14)=1 ,成功; H(23)=10 ,成功; H(01)=1 ,冲突,=2,成功; H(68)=3 ,成功; H(20)=7 ,成功; H(84)=6 ,冲突,=7,冲突,=8,成功; H(27)=16 ,冲突,=2,冲突,=3,冲突,=4,成功; H(55)=3 ,冲突,=4,冲突,=5,成功; H(11)=11 ,成功;
14
ASLSUCC=18/10=1.8 搜索不成功时的平均搜索长度: ASLSUCC=52/13=4
解答: 3 3 3 3 3 3
3 6 6
这个AVL 树中删除根结点时有两种方案: 方案1 :在根的左子树中沿右链走到底,用5递补根结点中原来的6,再删除5所在的结点。 5
方案2 :在根的左子树中沿左链走到底,用7递补根结点中原来的6,再删除7所在的结点。 7
得到的二叉树如下: 46
设有一个表头指针为first的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点按逆序链接。 解答1 template <class Type > void List <Type>: : Tnerse() { if (first== NULL )return ; ListNode <Type >* p=first→link ; , *pr =NULL ; While (p !=NULL ) { First→link =pr ; Pr =first ;first =p ;p =p→link; } first ->link =pr ; }
template <class Type > void List <Type>: : Tnerse() { ListNode <Type >* p , *head = new ListNode <Type > ( ) ; While (first ! = NULL ) { P=first ;first = first→link; p→link =head→link ; head→link =p; } first = head→link ; delete head ; }
解答
1count [ I ]= 0 2 NodeTable [j ].adj =p 3 top =I top =count [top ]
排序结果是 A B C D E F ,链式栈count 的变化如下 : → →A B C D E F 初始 输出A 输出B 输出C 输出D 输出E 输出F B进栈 C进栈 D进栈 E进栈 F进栈 栈空 |
数据结构试题2
最新推荐文章于 2023-05-30 18:29:27 发布
数据结构试题2
2007-01-18 10:28