2017年中国民航大学电子信息工程学院833算法与数据结构考研导师圈点必考题汇编
● 摘要
一、填空题
1. 设T 是一棵结点值为整数的二叉排序树,A 是一个任意给定的整数。free_tree在下面的算法中,(T )在对二叉排序树丁进行后序遍历时释放二又排序树T 的所有结点;
首
先在二叉排序树T 中查找值为A 的结点,根据查找情况分别进行如下处理:(1)若找不到值为A 的结点,则返回根结点的地址(2)若找到值为A 的结点,则删除以此结点为根的子树,并释放此子树中的所有结点,若值为A 的结点是查找树的根结点,删除后变成空的二叉树,则返否则返回根结点的地址。
【答案】
2. 对n 个记录的表r[l..n]进行简单选择排序,所需进行的关键字间的比较次数为_____。
【答案】n (n-1)/2
【解析】第一次需要n-1次比较,第i 此需要n-i 此比较,所以共需要、n-l+n-2+...+l=n(n-l )/2。
3. 建立索引文件的目的是_____。
【答案】提高查找速度
4. 深度为H 的完全二叉树至少有_____个结点; 至多有_____个结点; H 和结点总数N 之间的关系是_____。
【答案】
5. 设单链表的结点结构为为指针域,已知指针px 指向单链表中data 为x 的结
_____;点,指针py 指向data 为y 的新结点,若将结点y 插入结点x 之后,贝懦要执行以下语句:
_____;
【答案】
6. 属于不稳定排序的有_____。
【答案】希尔排序、简单选择排序、快速排序、堆排序等
7. 以下是用类C 语言写山的算法,该算法将以二叉链表存储的二叉树中的叶结点按从左到右的顺序链成一个带头结点的双向循环链表,链接时,结点的Lchild 域作为前链域,指向结点的直接前驱,结点的Rchild 域作为后链域,指向结点的直接后继。算法中,使用一个顺序栈stack , 栈顶head 为双向循坏链表的头指针。 指针为top , P , t 为辅助指针,试填充算法中的空格,使算法完整。
void leafchain(BiTree Abt)
{p={BiTree)malloc (sizeof (BiTNode )); If (!p ){print£(“OVERFLOW\n”; exit (1); }
head=p; top=0; if (bt )
{top++; stack[top]=bt; while (top )
{t=stack[top]; top--;
if (it->Lchild && !t->Rchild){ (1) ; (2) ; (3) ; } else {if( (4) ){top++; stack[top]= (5) ; } if ( (6) ){top++; stack[top]= (5) ; } } }
(8) ; (9) ; } } 【答案】
p->Rchild=t:t->Lchild=p:p=t: t->Rchild!=null:t->Rchild: p->Rchild=head:head->Lchild=p
8. 完善算法:求KMP 算法.next 数组。
t->Lchild!=null:
t->Lchild:
END ; 【答案】
9. 设正文串长度为n ,模式串长度为m ,则串匹配的KMP 算法的时间复杂度为_____。
【答案】
10.求最短路径的Dijkstra 算法的时间复杂度为_____。
【答案】
11.在基于关键字比较且时间为O (nl 〇g2n )的排序中,若要求排序是稳定的,则可选用_____,则可选用_____排序。 排序;若要求就地排序(及辅助空间为0(1))
【答案】归并;堆
12.文件由_____组成;记录由_____组成。
【答案】记录;数据项
13.已知一循环队列的存储空间为环队列判满的条件是( )
【答案】
14.下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。
【答案】
其中队头和队尾指针分别为front 和rear , 则此循
相关内容
相关标签