- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(C版)课后答案 (王红梅)第3章 特殊线性表—栈、队列和串
第 3 章 特殊线性表——栈、队列和串
课后习题讲解
1. 填空
⑴ 设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5, 经过push,push,pop,push,pop,push,push后,输出序列是( ),栈顶指针为( )。【解答】23,1003H
⑵ 栈通常采用的两种存储结构是( );其判定栈空的条件分别是( ),判定栈满的条件分别是( )。【解答】顺序存储结构和链接存储结构(或顺序栈和链栈),栈顶指针top= -1和top=NULL,栈顶指针top等于数组的长度和内存无可用空间
⑶( )可作为实现递归函数调用的一种数据结构。【解答】栈【分析】递归函数的调用和返回正好符合后进先出性。
⑷ 表达式a*(b+c)-d的后缀表达式是( )。【解答】abc+*d-【分析】将中缀表达式变为后缀表达式有一个技巧:将操作数依次写下来,再将算符插在它的两个操作数的后面。
⑸ 栈和队列是两种特殊的线性表,栈的操作特性是( ),队列的操作特性是( ),栈和队列的主要区别在于( )。【解答】后进先出,先进先出,对插入和删除操作限定的位置不同
⑹ 循环队列的引入是为了克服( )。【解答】假溢出
⑺ 数组Q[n]用来表示一个循环队列,front为队头元素的前一个位置,rear为队尾元素的位置,计算队列中元素个数的公式为( )。【解答】(rear-front+n)% n【分析】也可以是(rear-front)% n,但rear-front的结果可能是负整数,而对一个负整数求模,其结果在不同的编译器环境下可能会有所不同。
⑻ 用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是( )和( )。【解答】O(1),O(n)【分析】在带头指针的循环链表中,出队即是删除开始结点,这只需修改相应指针;入队即是在终端结点的后面插入一个结点,这需要从头指针开始查找终端结点的地址。
⑼ 串是一种特殊的线性表,其特殊性体现在( )。【解答】数据元素的类型是一个字符
⑽ 两个串相等的充分必要条件是( )。【解答】长度相同且对应位置的字符相等【分析】例如abc≠abc ,abc≠bca。
2. 选择题
⑴ 若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是( )。A 不确定 B n-i C n-i-1 D n-i+1【解答】D【分析】此时,输出序列一定是输入序列的逆序。
⑵ 设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是( )。A 6 B 4 C 3 D 2【解答】C【分析】由于队列具有先进先出性,所以,此题中队列形同虚设,即出栈的顺序也是e2、e4、e3、e6、e5、e1。
⑶ 一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是( )。A 54321 B 45321 C 43512 D 12345 【解答】C【分析】此题有一个技巧:在输出序列中任意元素后面不能出现比该元素小并且是升序(指的是元素的序号)的两个元素。
⑷ 设计一个判别表达式中左右括号是否配对的算法,采用( )数据结构最佳A 顺序表 B 栈 C 队列 D 链表【解答】B【分析】每个右括号与它前面的最后一个没有匹配的左括号配对,因此具有后进先出性。
⑸ 在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个( )结构。A 栈 B队列 C 数组 D线性表【解答】B【分析】先进入打印缓冲区的文件先被打印,因此具有先进先出性。
⑹ 一个队列的入队顺序是1,2,3,4,则队列的输出顺序是( )。A 4321 B 1234 C 1432 D 3241【解答】B【分析】队列的入队顺序和出队顺序总是一致的。
⑺ 栈和队列的主要区别在于( )。A 它们的逻辑结构不一样 B 它们的存储结构不一样C 所包含的运算不一样 D 插入、删除运算的限定不一样【解答】D【分析】栈和队列的逻辑结构都是线性的,都有顺序存储和链接存储,有可能包含的运算不一样,但不是主要区别,任何数据结构在针对具体问题时包含的运算都可能不同。
⑻ 设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是( )。A S1的栈底位置为0,S2的栈底位置为n-1B S1的栈底位置为0,S2的栈底位置为n/2C S1的栈底位置为0,S2的栈底位置为nD S1的栈底位置为0,S2的栈底位置为1【解答】A【分析】两栈共享空间
文档评论(0)