知识大全 第3章栈和队列习题练习

Posted

篇首语:案头见蠹鱼,犹胜凡俦侣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 第3章栈和队列习题练习相关的知识,希望对你有一定的参考价值。

一 基础知识题 设将整数 依次进栈 但只要出栈时栈非空 则可将出栈操作按任何次序夹入其中 请回答下述问题   ( )若入 出栈次序为Push( ) Pop() Push( ) Push( ) Pop() Pop( ) Push( ) Pop( ) 则出栈的数字序列为何(这里Push(i)表示i进栈 Pop( )表示出栈)?   ( ) 能否得到出栈序列 和 ?并说明为什么不能得到或者如何得到    ( )请分析 的 种排列中 哪些序列是可以通过相应的入出栈操作得到的  

链栈中为何不设置头结点?

循环队列的优点是什么? 如何判别它的空和满? 

设长度为n的链队用单循环链表表示 若设头指针 则入队出队操作的时间为何? 若只设尾指针呢?  指出下述程序段的功能是什么? ( ) void Demo (SeqStack *S)     int i; arr[ ] ; n= ;     while ( StackEmpty(S)) arr[n++]=Pop(S);     for (i= i< n; i++) Push(S arr[i]);    //Demo ( ) SeqStack S S tmp;   DataType x;   //假设栈tmp和S 已做过初始化   while ( ! StackEmpty (&S ))         x=Pop(&S ) ;     Push(&tmp x);       while ( ! StackEmpty (&tmp) )         x=Pop( &tmp);      Push( &S x);     Push( &S x);    ( ) void Demo ( SeqStack *S int m)     // 设DataType 为int 型     SeqStack T; int i;     InitStack (&T);     while (! StackEmpty( S))      if(( i=Pop(S)) !=m) Push( &T i);     while (! StackEmpty( &T))            i=Pop(&T); Push(S i);          ( )void Demo ( CirQueue *Q)    // 设DataType 为int 型     int x; SeqStack S;    InitStack( &S);     while (! QueueEmpty( Q ))     x=DeQueue( Q); Push( &S x);     while (! StackEmpty( &s))      x=Pop(&S); EnQueue( Q x );    // Demo ( ) CirQueue Q Q ; // 设DataType 为int 型   int x i n= ;   // 设Q 已有内容 Q 已初始化过   while ( ! QueueEmpty( &Q ) )     x=DeQueue( &Q ) ; EnQueue(&Q x); n++;   for (i= ; i< n; i++)     x=DeQueue(&Q ) ;   EnQueue( &Q x) ; EnQueue( &Q x); 

二 算法设计题 

回文是指正读反读均相同的字符序列 如 abba 和 abdba 均是回文 但 good 不是回文 试写一个算法判定给定的字符向量是否为回文 (提示 将一半字符入栈) 

利用栈的基本操作 写一个将栈S中所有结点均删去的算法void ClearStack( SeqStack *S) 并说明S为何要作为指针参数? 

利用栈的基本操作 写一个返回S中结点个数的算法 int StackSize( SeqStack S) 并说明S为何不作为指针参数? 

设计算法判断一个算术表达式的圆括号是否正确配对 (提示 对表达式进行扫描 凡遇到 ( 就进栈 遇 ) 就退掉栈顶的 ( 表达式被扫描完毕 栈应为空  

一个双向栈S是在同一向量空间内实现的两个栈 它们的栈底分别设在向量空间的两端 试为此双向栈设计初始化InitStack ( S ) 入栈Push( S i x) 和出栈Pop( S i )等算法 其中i为 或 用以表示栈号  

Ackerman 函数定义如下 请写出递归算法         ┌ n+     当m= 时 AKM ( m n ) = │ AKM( m ) 当m≠ n= 时         └ AKM( m AKM( m n )) 当m≠ n ≠ 时  

用第二种方法 即少用一个元素空间的方法来区别循环队列的队空和队满 试为其设计置空队 判队空 判队满 出队 入队及取队头元素等六个基本操作的算法  

假设以带头结点的循环链表表示队列 并且只设一个指针指向队尾元素站点(注意不设头指针) 试编写相应的置空队 判队空 入队和出队等算法  

对于循环向量中的循环队列 写出求队列长度的公式  

cha138/Article/program/sjjg/201311/23990

相关参考

知识大全 数据结构考研分类复习真题 第三章 栈和队列[2]

  一个栈的输入序列为…n若输出序列的第一个元素是n输出第i(<=i<=n)个元素是(   )【中山大学一(分)】  A不确定  &nbs

知识大全 数据结构考研分类复习真题 第三章 栈和队列[3]

  一个栈的输入序列为则下列序列中不可能是栈的输出序列的是(   )【南开大学一】【山东大学二(分)】【北京理工大学一(分)】  A   &

知识大全 栈和队列 - 栈和队列的应用实例 - 队列的应用实例

  队列的应用舞伴问题  问题叙述  假设在周末舞会上男士们和女士们进入舞厅时各自排成一队跳舞开始时依次从男队和女队的队头上各出一人配成舞伴  若两队初始人数不相同则较长的那一队中未配对者等待下一轮舞

知识大全 数据结构考研分类复习真题 第三章 栈和队列[26]

  .线性表中元素存放在向量A(…n)中元素是整型数试写出递归算法求出A中的最大和最小元素【北京邮电大学八(分)】  已知求两个正整数m与n的最大公因子的过程用自然语言可以表述为反复执行如下动作第一步

知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(一)

  栈和队列的应用非常之广只要问题满足后进先出和先进先出原则均可使用栈和队列作为其数据结构  栈的应用  数制转换  将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题很容易通过除B取余

知识大全 第6章树(算法设计)习题练习

*二叉树的遍历算法可写为通用形式例如通用的中序遍历为 voidInorder(BinTreeTvoid(*visit)(DataTypex))   if(T)  &nbs

知识大全 栈和队列 - 队列 - 顺序队列

  顺序队列  顺序队列  ()顺序队列的定义  队列的顺序存储结构称为顺序队列顺序队列实际上是运算受限的顺序表  ()顺序队列的表示  ①和顺序表一样顺序队列用一个向量空间来存放当前队列中的元素  

知识大全 第6章树(算法设计)习题练习答案

*二叉树的遍历算法可写为通用形式例如通用的中序遍历为 voidInorder(BinTreeTvoid(*visit)(DataTypex))  if(T)    Inorder(T>lchil

知识大全 第4章串习题练习

一基础知识题简述下列每对术语的区别  空串和空白串串常量和串变量主串和子串静态分配的顺序串和动态分配的顺序串目标串和模式串有效位移和无效位移假设有如下的串说明 chars[]=StocktomCAs[

知识大全 第10章文件习题练习

常见的文件组织方式有哪几种?各有何特点?文件上的操作有哪几种?如何评价文件组织的效率?索引文件散列文件和多关键字文件适合存放在磁带上吗?为什么?设有一个职工文件其记录格式为(职工号姓名性别职务年龄工资