1、数据结构实验题目,题目一约瑟夫环,【问题描述】 约瑟夫(Joseph)问题的一种描述是:编号为1,2,, n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。,题目一约瑟夫环,【基本要求】 利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号。,题目一约瑟夫环,【测试数据】 m的初值为20;密码:3,1,7,2,4,8,4(正确的
2、结果应为6,1,4,7,2,3,5)。,题目一约瑟夫环,【实现提示】 程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。设n30。,题目一约瑟夫环,【选作内容】 向上述程序中添加在顺序结构上实现的部分。,题目二停车场管理,【问题描述】 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它
3、让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。,题目二停车场管理,【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。,题目二停车
4、场管理,【测试数据】 设n=2,输入数据为:(A,1,5),(A,2,10),(D,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达;D表示离去,E表示输入结束。,题目二停车场管理,【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。,题目二停车场管理,【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则它们的占地
5、面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。 (3)汽车可以直接从便道上开走,此时排在它面前的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。,题目三 构造二叉树,【问题的提出】 给定一棵二叉树按某种次序遍历可以得到唯一的结点序列。 给定一个按某种次序遍历的结点序列能否唯一确定一棵二叉树? 任意给定按两种不同次序遍历的结点序列能否唯一确定一棵二叉树?,题目三 构造二叉树,【基本要求】 已知先序和中序的结点序列,构造相应的二叉树。,题目三 构造二叉树,【测试数据】 先序序列:ABCDEFGHIJ 中序序列:BCDAFEHJIG,