1、1栈和队列数据结构的特点第三章 习题一、 基本题1填空:线性表、栈和队列都是_结构,可以在线性表的_位置插入和删除元素,对于栈只能在_位置插入和删除元素,对于队只能在_位置插入和_位置删除元素。2. 栈和队列数据结构的特点,什么情况下用到栈,什么情况下用到队列?3设有编号为 1,2,3,4 的四辆车,顺序进入一个栈式结构的站台,试写出这四辆车开出车站的所有可能的顺序(每辆车可能入站,可能不入站,时间也可能不等) 。4试证明:若借助栈由输入序列 1,2, ,n 得到输出序列为 p1p2pn (它是输入序列的一http:/www.wenku1.Com 个排列) ,则在输出序列中不可能出现这样的情形
2、:存在着 i2二、 设计算法题1 假设称正读和反读都相同的字符序列为“回文”,例如, “abcddcba”、 “qwerewq”是回文, “ashgash”不是回文。是写一个算法判断读入的一个以为结束符的字符序列是否为回文。2 设以数组 sem存放循环队列的元素,同时设变量rear 和 front 分别作为队头队尾指针,且队头指针指向队头前一个位置,写出这样设计的循环队列入队出队的算法。3 假设以数组 sem存放循环队列的元素,同时设变量rear 和 num 分别作为队尾指针和队中元素个数记录,试给出判别此循环队列的队满条件,并写出相应入队和出队的算法。4 假设以带头结点的循环链表表示一个队列
3、,并且只设一个队尾指针指向尾元素结点(注意不设头指针) ,试写出相应的置空队、入队、出队的算法。5 设计一个算法判别一个算术表达式的圆括号是否正确配对。6 写一个算法,借助于栈将一个单链表置逆。7两个栈共享向量空间 vm,它们的栈底分别设在向量的两端,每个元素占一个分量,试写出两个栈公用的栈操3作算法:push(i,x) 、 pop(i)和 top(i),i=0 和 1 ,用以指示栈号。三、 实验题目1 背包问题的求解:假设有一个能装入总体积为 T 的背包和 n 件体积分别为w1 , w2 , , wn 的物品,能否从 n 件物品中挑选若干件恰好装满背包,即使 w1 +w2 + + wn=T,
4、要求找出所有满足上述条件的解。例如:当 T=10,各件物品的体积1,8,4,3,5,2时,可找到下列 4 组解:(1,4,3,2)(1,4,5)(8,2)(3,5,2) 。提示:可利用回溯法的设计思想来解决背包问题。首先将物品排成一列,然后顺序选取物品装入背包,假设已选取了前 i 件物品之后背包还没有装满,则继续选取第 i+1 件物品,若该件物品“太大”不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取,如此重复, ,4直至求得满足条件的解,或者无解。由于回溯求解的规则规则是“后进先出”因此自然要用到栈。百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网,您的在线图书馆