2017年北京工业大学北京未来网络科技创新中心数据结构考研复试核心题库
● 摘要
一、应用题
1. 假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:
(1)画出描述折半查找过程的判定树;
(2)若查找元素54,需依次与哪些元素比较?
(3)若查找元素90,需依次与哪些元素比较?
(4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。
【答案】(1)判定树如图所示:
图 判定树
(2)若查找元素54,需依次和元素30、63、42、54比较,查找成功。
(3)若查找元素90,需依次和元素30、63、87、95比较,查找失败。
(4)
2. 特殊矩阵和稀疏矩阵哪一种压缩存储后失去随机存取的功能? 为什么?
【答案】特殊矩阵指值相同的元素或零元素在矩阵中的分布有一定规律,因此可以对非零元
,将非零元素存储在向量中,元素的下标i 和j 和该素分配单元(对值相同元素只分配一个单元)
元素在向量中的下标有一定规律,可以用简单公式表示,仍具有随机存取功能。而稀疏矩阵是指非零元素和矩阵容量相比很小且分布没有规律。用十字链表作存储结构自然失去了随机
最差情况下是因此也失去存取的功能。即使用三元组表的顺序存储结构,存取下标为i 和j 的元素时,要扫描三元组表,下标不同的元素,存取时间也不同,最好情况下存取时间为了随机存取的功能。
3. 如果输入序列为123456, 试问能否通过栈结构得到以下两个序列:435612和135426; 请说明为什么不能或如何才能得到。
【答案】输入序列为123456, 不能得出435612, 其理由是,输出序列最后两元素是12, 前面4个元素(4356)得到后,栈中元素剩12, 且2在栈顶,栈底元素1不可能在栈顶元素2之前出栈。得到135426的过程如下:1入栈并出栈,得到部分输出序列1; 然后2和3入找,3出栈,部分输出序列变为13; 接着4和5入栈,5、4和2依次出栈,部分输出序列变为13542; 最后6入栈并出
栈,得到最终结果135426。
4. 对于具有n 个叶结点且所有非叶结点都有左、右孩子的二叉树。
(1)试问这种二叉树的结点总数是多少?
(2)试证明 。其中:表示第i 个叶结点所在的层号(设根结点所在层号为1)。
【答案】(1)根据二叉树中度为2的结点个数等于叶结点个数减1的性质,故具有n 个叶结点且非叶子结点均有左子树的二叉树的结点数是2n-l 。
(2)证明:当i=l时,
成立。
设某叶结点的层号为t ,当将该结点变为内部结点,从而再增加两个叶结点时,这两个叶结点的层号都是t+1, 对于公式的变化,是减少了一个原来的叶结点,増加了两个新叶结点,反映到公
,所以结果不变,这就证明当i=n时公式仍成立。证毕。 式中. 因为
5. 如果两个串含有相等的字符,能否说它们相等?
【答案】仅从两串含有相等的字符,不能判定两串是否相等,两串相等的充分必要条件是两串长度相等且对应位置上的字符相同(即两串串值相等)。
6. 索引顺序存取方法(ISAM )中,主文件已按关键字排序,为何还需要主关键字索引?
【答案】ISAM 是专为磁盘存取设计的文件组织方式。即使主文件关键字有序,但因磁盘是以盘组、柱面和磁道(盘面)三级地址存取的设备,因此通常对磁盘上的数据文件建立盘组、柱面和磁道(盘面)三级索引。在ISAM 文件上检索记录时,先从主索引(柱面索引的索引)找到相应柱面索引。再从柱面索引找到记录所在柱面的磁道索引,最后从磁道索引找到记录所在磁道的第一个记录的位置,由此出发在该磁道上进行顺序查找直到查到为止;反之,若找遍该磁道而未找到所查记录,则文件中无此记录。
7. 某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号 机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:
, 公式成立。设当i=n-1时公式成立,证明当i=n时公式仍
请添加必要的信号量和P 、V (或wait ( )、signal ( ))操作,实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
【答案】(1)互斥资源:取机号,故设一个互斥信号量mutex 。
(2)同步问题:顾客需要获得空座位等待叫号,当营业员空闲时,将选取一位顾客为其服务。空座位的有、 无影响等待顾客数量,顾客的有、无决定两营业员是否能开始服务。另外,顾客获得空座位后,需要等待叫号和被服务,顾客与营业员就服务何时开始有同步关系。设信号量teller ,customer 和mutex 初值分别为0,0和1,设waiting 为整型量,表示排队的储户数量,其初始为0, 表示顾客初始时为0, 最大不超过10 (10把座椅),各进程的具体实现如下所示:
//座椅数,也是最多排队的储户数
//定义信号量
//储户进程
//先获得排队机
//若还有座椅则取号
//取号,占用座椅等待叫号
//告知系统储户加1
//释放排队机
//若没有座椅了,则不取号
//不取号,释放排队机
//离开
//并发调度无限循环
//叫号
//需要获得排队机的控制权
//将等候的顾客数减1
//等待储户的柜员资源
//排队等待服务的储户数量
//对排队机操作的互斥量
//在座椅上休息等待的储户数
//等待柜员叫号
//进入窗口被服务
相关内容
相关标签