首页>计算机等级考试>模拟试题>正文
第3章:栈和队列习题练习

www.zige365.com 2010-7-22 11:02:24 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
       一、基础知识题
  3.1 设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题:
  若入、出栈次序为Push, Pop,Push,Push, Pop, Pop,Push, Pop,则出栈的数字序列为何表示i进栈,Pop表示出栈)?
  能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。
  请分析 1,2 ,3 ,4 的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。
  3.2 链栈中为何不设置头结点?
  3.3 循环队列的优点是什么? 如何判别它的空和满?
  3.4 设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢?
  3.5 指出下述程序段的功能是什么?
  void Demo1 //Demo1
  SeqStack S1, S2, tm
  DataType x;
  ...//假设栈tmp和S2已做过初始化
  while )
  while )
  void Demo2
  }
  void Demo3
  while )
  }// Demo3
  CirQueue Q1, Q2; // 设DataType 为int 型
  int x, i , n= 0;
  ... // 设Q1已有内容, Q2已初始化过
  while )
  for
  二、算法设计题
  3.6 回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文。试写一个算法判定给定的字符向量是否为回文。
  3.7 利用栈的基本操作,写一个将栈S中所有结点均删去的算法void ClearStack,并说明S为何要作为指针参数?
  3.8 利用栈的基本操作, 写一个返回S中结点个数的算法 int StackSize,并说明S为何不作为指针参数?
  3.9 设计算法判断一个算术表达式的圆括号是否正确配对。 ‘就退掉栈顶的‘ 、入栈Push 和出栈Pop等算法, 其中i为0 或1, 用以表示栈号。
  3.11Ackerman 函数定义如下:请写出递归算法。
  ┌ n+1  当m=0时
  AKM = │ AKM 当m≠0 ,n=0时
  └ AKM) 当m≠0, n ≠ 0时
  3.12用第二种方法 ,即少用一个元素空间的方法来区别循环队列的队空和队满,试为其设计置空队,判队空,判队满、出队、入队及取队头元素等六个基本操作的算法。
  3.13 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素站点 ,试编写相应的置空队、判队空 、入队和出队等算法。
  3.14 对于循环向量中的循环队列,写出求队列长度的公式。
  3.15 假设循环队列中只设rear和quelen 来分别指示队尾元素的位置和队中元素的个数,试给出判别此循环队列的队满条件,并写出相应的入队和出队算法,要求出队时需返回队头元素。
我要投稿 新闻来源: 编辑: 作者:
相关新闻