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

2018年北京市培养单位工程科学学院864程序设计之数据结构考研强化五套模拟题

  摘要

目录

2018年北京市培养单位工程科学学院864程序设计之数据结构考研强化五套模拟题(一) ... 2 2018年北京市培养单位工程科学学院864程序设计之数据结构考研强化五套模拟题(二) ... 9 2018年北京市培养单位工程科学学院864程序设计之数据结构考研强化五套模拟题(三) . 16 2018年北京市培养单位工程科学学院864程序设计之数据结构考研强化五套模拟题(四) . 20 2018年北京市培养单位工程科学学院864程序设计之数据结构考研强化五套模拟题(五) . 29

一、算法设计题

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

【答案】算法如下:

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

起泡的上下界

设不发生交换

以上向下起泡

有交换,修改标志

change

修改界

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

)

修改下界

2. 输入一个字符串,内有数字和非数字字符,如:akl23x4561796073029ef4563。将其中连续的数字作为一个整体,依次存放到一数组a 中,例如123放入a[0],456放入a[l],...... 。编程统计其共有多少个整数,并输出这些数。

【答案】算法如下:

( )

//从键盘输入字符串,连续的数字字符算作一个整数,统计其中整数的个数

//整数存储到数组a ,i 记整数个数

//从左到右读入字符串

//'#'是字符串结束标记

//是数字字符

//数初始化

//拼数

//若拼数中输入了’#’,则不再输入

//输入非数字且非#时,继续输入字符

("共有

个整数,它们是:

)

//每10个数输出在一行上

//算法结束

3. 已知无向图采用邻接表存储方式,试写出删除边(i, j) 的算法。

【答案】算法如下:

在用邻接表方式存储的无向图g 中,删除边(i,

j)

删顶点i 的边结点(i, j) , pre 是前驱指针

释放空间

沿链表继续査找

删顶点j 的边结点(j,

i)

释放空间

沿链表继续査找

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

【答案】算法如下:

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

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

//监视哨

//pa指针后移

//pb指针后移

//处理交集元素

//删除重复元素

//交集元素并入结果表

//置结果链表尾

5. 设排序二叉树中结点的结构为下述三个域构成:

Data :给出结点数据的值;left :给出本结点的左儿子结点的地址;right :给出本结点的右儿子结点的地址。设data 域为正整数,该二叉树根结点地址为T 。现给出一个正整数x 。请编写非递归程序,实现将data 域之值小于等于x 的结点全部删除掉。

【答案】算法如下:

非递归删除以r 为根的二叉排序树

栈,容量足够大,栈中元素是二叉排序树结点的指针

沿左分枝向下

出栈,沿栈顶结点的右子树向下刪除,释放被删除结点空间

在二叉排序树T 中删除所有小于等于x

的结点

根结点的值小于等于

x

删除二叉树p ,删除持续到" 根" 结点值大于x 或T 为空树为止

沿根结点左分支向下,査小干等于x 的结点

q 记P 的双亲

结点的值小于等于

x

再査原P 的右子树中小于等于x 的结点