2017年东南大学5h1专业综合测试1之数据结构复试实战预测五套卷
● 摘要
一、应用题
1. 已知一个带有表头结点的单链表,结点结构为datalink , 假设该链表只给出了头指针list 。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k 个位置上的结点(k 为正整数)。若查找成功,算法输出该结点的data 域的值,并返回1; 否则,只返回0。要求:
(1)描述算法的基本设计思想; (2)描述算法的详细实现步骤;
(3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C 或,关键之处请给出简要注释。 现)
【答案】(1)算法的基本设计思想定义两个指针变量p 和q ,初始时均指向头结点的下一个结点。p 指针沿链表移动;当p 指针移动到第k 个结点时,q 指针开始与p 指针同步移动;当p 指针移动到链表最后一个结点时,因为p 和q 相隔k ,故q 指针所指元素为倒数第k 个结点。以上过程对链表仅进行一遍扫描。
(2)算法的详细实现步骤
①count=0, p 和q 指向链表表头结点的下一个结点; ②若p 为空,转⑤; ,
③若count 等于k ,则q 指向下一个结点;否则,count=count+l; ④p 指向下一个结点,转步骤②;
⑤若count 等于k ,则查找成功,输出该结点的data 域的值,返回1; 否则,查找失败,返回0;
⑥算法结束。 (3)算法实现
第 2 页,共 39 页
或JA V A 语言实
2. 已知n 阶下三角矩阵A (即当
时,有,按照压缩存储的思想,可以将其主对角线以)
下所有元素(包括主对角线上元素)依次存放于一维数组B 中,请写出从第一列开始采用列序为主序分配方式时在B 中确定元素的存放位置的公式。
【答案】2
阶下三角矩阵元素第1列到第
列是梯形,元素数为
第1列有n 个元素,第j 列有而在第j 列上的位置是为
3. 给出一组关键字:29,18,25,47,58,12,51,10,分别写出按下列各种排序方法进行排序时的变化过程:
(1)归并排序,每归并一次书写一个次序。 (2)快速排序,每划分一次书写一个次序。
(3)堆排序,先建成一个堆,然后每从堆顶取下一个元素后,将堆调整一次。 【答案】(1)2—路归并第一趟:18,29,25,47,12,58,10,51: 第二趟:18,25,29, 47,10,12,51,58; 第三趟:10,12,18,25,29,47,51,58
(2)快速排序第一趟:10,18,25,12,29,58,51,47; 第二趟:10,18,25,12,29,47,51,88; 第三趟:10,12,18,25,29,47,51,88 (3)堆排序
建大堆:58,47,51,29,18,12,25,10; ①51,47,25,29,18,12,10,58; ②47,29,25,10,18,12,51,58; ③29,18,25,10,12,47,51,58; ④25,18,12,10,29,47,51,58; ⑤18,10,12,25,29, 47,51,58; ⑥12,10,18,25,29,47,51,58; ⑦10,12,18,25,29, 47,51,58
4. 某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号 机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:
第 3 页,共 39 页
个元素,所以n
阶下三角矩阵A 按列存储,其元素在一维数组B 中的存储位置k 与i 和j 的关系为:
请添加必要的信号量和P 、V (或wait ( )、signal ( ))操作,实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
【答案】(1)互斥资源:取机号,故设一个互斥信号量mutex 。
(2)同步问题:顾客需要获得空座位等待叫号,当营业员空闲时,将选取一位顾客为其服务。空座位的有、 无影响等待顾客数量,顾客的有、无决定两营业员是否能开始服务。另外,顾客获得空座位后,需要等待叫号和被服务,顾客与营业员就服务何时开始有同步关系。设信号量teller ,customer 和mutex 初值分别为0,0和1,设waiting 为整型量,表示排队的储户数量,其初始为0, 表示顾客初始时为0, 最大不超过10 (10把座椅),各进程的具体实现如下所示:
//座椅数,也是最多排队的储户数
//定义信号量
//储户进程
//先获得排队机
//若还有座椅则取号
//取号,占用座椅等待叫号
//告知系统储户加1
//释放排队机
//若没有座椅了,则不取号
//不取号,释放排队机
//离开
第 4 页,共 39 页
//等待储户的柜员资源
//排队等待服务的储户数量
//对排队机操作的互斥量
//在座椅上休息等待的储户数
//等待柜员叫号
//进入窗口被服务
相关内容
相关标签