当前位置:问答库>考研试题

2018年武汉纺织大学数学与计算机学院408计算机学科专业基础综合之数据结构考研核心题库

  摘要

一、算法设计题

1. 已知两个线性表A , B 均以带头结点的单链表作存储结构,且表中元素按值递增有序排列。设计算法求出A 与B 的交集C ,要求C 另开辟存储空间。,并同样以元素值的递增有序的单链表形式存储。

【答案】算法如下:

//线性表A 和B 以带头结点的单链表作为存储结构。本算法求A 和B 的交集C , C 另辟空间

//pa、pb 是两链表的工作指针

//监视哨

//pa指针后移

//pb指针后移

//处理交集元素

//删除重复元素

//交集元素并入结果表

//置结果链表尾

2. 起泡排序算法是把大的元素向上移(气泡的上浮) ,也可以把小的元素向下移(气泡的下沉;请给出上浮和下沉过程交替的起泡排序算法。

【答案】算法如下:

相邻两趟向相反方向起泡的起泡排序算法,

起泡的上下界

设不发生交换

以上向下起泡

有交换,修改标志

change

修改界

气泡下沉,小元素上浮(向左

)

修改下界

3. 结点类型和存储结构如下:

试设计一个排序算法,要求不移动结点的存储位置,只在结点的count 字段记录结点在排序中的序号,并将排序结果按升序输出。

【答案】算法如下:

对存储在数组R 中的记录进行排序

初始化

设R[0]作监视哨,Max 是该类型最大元

初始假定第一个元素有序

前驱

第一个元素

査找第i 个元素的序号

将笫i 个元素链入静态链表

4. 假设以双亲表示法作树的存储结构,写出双亲表示的类型说明,并编写求给定的树的深度的算法(注:已知树中的结点数) 。

【答案】算法如下:

求以双亲表示法作为存储结构的树的深度

深度加1, 并取新的双亲

最大深度更新

返回树的深度

’结束Depth

5. 从键盘上输入一串正整数,最后输入-1作为结束标志。如:8,7,1,22,98,46,... ,75,-1。请设计一个非递归程序,创建一棵二叉排序树,并且该二叉排序树也必须是中序线索二叉树。设ltag ,data ,rta9,right) 。该二叉排序树上的结点结构为(teft,其中:data 域为结点的数据场。那么left 域中存在的是该结点的左儿子结点的地址。序遍历次序的前驱结点的地址。

【答案】算法如下:

从键盘上输入一串正整数,建立一棵初始为空的二叉排序树,同时也是线索二叉树

申请结点空间

结点赋值,其线

索初始化

查找结点的插入位置

f 是P 的双亲

根结点

左子女

修改线索

右子树根结点的值大于等于根结点的值

修改线索

读入下个数

算法结束

,那么left 域中存放的是该结点的按中

,那么right

域中存放的是该结点的右儿子结点的地址。

,那么right 域中存放的是该结点的按中序遍历次序的后继结点地址。

二、应用题

6. 如果两个串含有相等的字符,能否说它们相等?

【答案】仅从两串含有相等的字符,不能判定两串是否相等,两串相等的充分必要条件是两串长度相等且对应位置上的字符相同(即两串串值相等) 。