关于栈和队列的习题.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于栈和队列的习题.ppt

关于栈和队列的习题 一、选择题 1.用单循环链表表示队列,正确的说法是:(B ) A. 可设一个头指针使入队、出队都方便 B. 可设一个尾指针使入队、出队都方便 C. 必须设头尾指针才能使入队、出队都方便 D. 无论如何,只可能使入队方便 2.输入序列为(A,B,C,D),不可能得到的输出序列有?(D )。 A.(A,B,C,D)? B.(D,C,B,A)? C.(A,C,D,B) ? D.(C,A,B,D) 3.用顺序表实现栈结构时,顺序表地址的( B )作为栈顶操作比较方便。 A. 低端 B. 高端 4.用单链表实现栈结构构时,把链表的( A )作为栈顶操作比较方便。 A. 第一个元素 B.最后一个元素 二、判断题 1.栈和队列逻辑上都是线性表。 ( √ ) 2.消除递归不一定需要使用栈。(√ ) 三、填空题 1.用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是??O(1)??? 和?O(n)???? ;若只设尾指针,则出队和入队的时间复杂度分别是??O(1)?? 和??O(1)?? 。 2.栈的特点是( 后进先出 )。 3.队列的特点是(先进先出 )。 四、问答题 内存中一片连续空间(不妨假设地址从1到m),提供给两个栈S1和S2使用,怎样分配这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢。 五、程序设计题 1.设A是一个栈,栈中共有N个元素,依次为A1,A2,…,AN,栈顶元素为AN,B是一个循环队列,队列中N个元素依次为B1,B2,…,BN,队头元素为B1,A,B均采用顺序存储结构且存储空间足够大,现要将栈中元素全部移到队列中,使得队列中元素与栈中元素交替排列,即B中元素为B1,A1,B2,A2,B3,A3,…,BN,AN,问至少需要多少次基本操作才能完成上述工作,请写出具体步骤(要求除A,B外所用的其他附加存储量为1,每次出栈、入栈、出队列可均看作一次基本操作)。 int main(int argc, char* argv[]) { queueint q; q.push(1); q.push(2); q.push(3); stackint s; s.push(4); s.push(5); s.push(6); int len; while(s.empty()!=true) { q.push(s.top());//栈顶元素放入队列尾部 s.pop();//删除栈顶元素 len=q.size();//此时队列的长度为len while(len2) {//队列的前len-2个元素放入队尾 q.push(q.front()); q.pop(); len--; } } while(q.empty()!=true) { coutq.front(); q.pop(); } return 0; } 我无法证明这是不是最少次数。大家可以思考一下有没有更好的方法。 2.已知Q是一个非空队列,S是一个空栈。仅用队列和栈的ADT函数和少量工作变量,使用C语言编写一个算法,将队列Q中的所有元素逆置。 ??int main(int argc, char* argv[]) { queueint q; q.push(1); q.push(2); q.push(3); stackint s; while(q.empty()!=true) {//队列中元素入栈 s.push(q.front()); q.pop(); } while(s.empty()!=true) {//栈中元素入队列 couts.top() ; q.push(s.top()); s.pop(); } return 0; } 接下来的时间,大家把本章内容复习一下,有不懂得地方问一下。 * 两个栈公用一片顺序空间 s1 s2 p2 p1 两个栈公用一片顺序空间 10 s1 s2 p2 p1 两个栈公用一片顺序空间 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间 12 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间 20 12 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间 20 21 12 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间 20 21 22 12 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间 20 21 22 23 12 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间 20 21 22 23 24 12 11 10 s1 s2 p2 p1 两个栈公用一片顺序空间

文档评论(0)

fa159yd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档