2018年北京服装学院计算机信息中心917程序设计与算法之数据结构考研仿真模拟五套题
● 摘要
一、填空题
1. 下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。
a 中存放待排序的关键字
【答案】
【解析】快速排序(quick sort)的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
2. 当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_____存储结构。
【答案】顺序
【解析】顺序存储结构的存取操作比较方便,但插入和删除操作不如链式存储结构方便,而且需要连续的存储空间,由于该线性表的元素总数基本稳定,而且很少进行插入删除操作,为了
更快的存取元素,顺序表更合适。
3. 试利用下列栈和串的基本操作完成下述填空题。
initstack(S)置S 为空栈; push(S,X) 元素X 入栈; pop(S)出栈操作; gettop(S)返回栈顶元素; sempty(S)判栈空函数; setnull(St)置串St 为空串; length(st)返回串st 的长度;
equal(S1,S 2) 判串S 1并S 2是否相等的函数; concat(S1,S 2) 返回联接S 1和S 2之后的串; sub(S,i ,1) 返回S 中第i 个字符;
empty(st)判串空函数
FUNCinvert(pre:string ;V ARexp :string) :boolean ;
{若给定的表达式的前缀式pre 正确,本过程求得和它相应的表达式exp 并返回true ,否则exp 为空串,并返回false 。已知原表达式中不包含括弧,opset 为运算符的集合。
)
_____;_____;
_____THEN_____
IF_____THEN_____
(_____,_____);
(_____,_____);
_____
_____THEN
注意:每个空格只填一个语句。
【答案】(1)initstack(S)//栈s 初始化为空栈 (2)setnull(exp)//串exp 初始化为空串
(3)chinopset//判取出字符是否是操作符
(4)push(s,ch)//如ch 是运算符,则入操作符栈s (5)sempty(s)//判栈s 是否为空
(6)succ:=false//若读出ch 是操作数且栈为空,则按出错处理 (7)exp
(8)ch//若ch 是操作数且栈非空,则形成部分中缀表达式 (9)exp
(10)gettop(s)//取栈顶操作符 (11)pop(s)//操作符取出后,出栈
(12)sempty(s)//将pre 的最后一个字符(操作数) 加入到中缀式exp 的最后
4.
线性表
【答案】(n﹣1)/2
【解析】删除第一个元素需要移动n ﹣1次,以此类推,删除最后一个元素需要移动0次。平均次数为(n﹣l)*n/n/2=(n﹣l)/2。
5. 假定查找有序表 中每个元素的概率相等,则进行折半查找时的平均查找长度为_____。
【答案】
表
平均查找次数为。
6. 在顺序存储的二叉树中,编号为i 和j 的两个结点处在同一层的条件是_____。
【答案】要加“虚结点”。
设编号为i 和j 的结点在顺序存储中的下标为s 和t , 则结点i 和j 在同一层上的条件是
。
7. 堆是一种有用的数据结构。堆排序是一种_____排序,堆实质上是一棵_____结点的层次序列。对含有N 个元素的序列进行排序时,堆排序的时间复杂度是_____,所需的附加存储结点是_____。关键码序列05, 23, 16, 68, 94, 72, 71, 73是否满足堆的险质_____ 。
【答案】选择;完全二叉树;
用数组表示,假定删除表中任一元素的概率相同,则删除一个元
素平均需要移动元素的个数是_____。
【解析】折半查找时每个的次数如表所示:
【解析】用顺序存储结构存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,
;O(1);满足堆的性质
相关内容
相关标签