03:栈与队列习题_第1页
03:栈与队列习题_第2页
03:栈与队列习题_第3页
03:栈与队列习题_第4页
03:栈与队列习题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4简述以下算法的功能(栈的元素类型SElemType 为 int )。基础知识题】1若按 3.1.1 节中所示铁道进行车厢调度 (注意:两侧铁道均为单向行驶道 ),则请回答:(1) 如果进站的车厢序列为 123,则可能得到的出站车厢序列是什么?(2) 如果进站的车厢序列为 123456,则能否得到 435612 和 135426的出站序列,并请说明为什么不能得到或者如何得到(即写出以'S'表示进栈和以 'X' 表示出栈的栈操作序列 )。2简述栈和线性表的差别。3写出下列程序段的输出结果(栈的元素类型SElemType 为char)。void main( )Sta

2、ck S;char x, y;InitStack(S);x='c' y='k'Push(S, x); Push(S, 'a'); Push(S, y);Pop(S, x); Push(S, 't'); Push(S, x);Pop(S, x); Push(S, 's');while (!StackEmpty(S) Pop(S, y); printf(y); ;printf(x);(1) status algo1(Stack S) int i, n, A 255;n=0;while (!StackEmpty(S) )

3、 n+; Pop(S, An); ;for ( i=1; i<= n ; i+) Push(S, Ai);(2) status algo2(Stack S, int e) Stack T; int d;InitStack(T);while (!StackEmpty(S) Pop(S, d);if (d!=e ) Push(T, d);while (!StackEmpty(T) Pop(T, d);Push(S, d);11简述队列和栈这两种数据类型的相同点和差异处。13简述以下算法的功能(栈和队列的元素类型均为int)。void algo3(Queue &Q)Stack S; i

4、nt d;InitStack (S);while (!QueueEmpty(Q)DeQueue(Q, d); Push(S, d);while (!StackEmpty(S)Pop(S, d); EnQueue(Q, d);编程练习题】本章编程练习题中可以利用的栈和队列的类型定义如下:/ stack 类型void InitStack( stack& s ); / 初始化 s 为空栈void Push( stack&s , char x); / 将元素 x 插入 s 的栈顶void Pop( stack& s );/ 删除 s 中的栈顶元素bool SEmpty( sta

5、ck& s);/ 若栈 s 为空则返回 TRUE, 否则返回 FALSEchar GetTop( stack& s );/ 返回 s 中的栈顶元素void ClearStack( stack& s);/ 将栈 s 清空int StackLength( stack& s);/ 返回栈 s 中元素个数void DestroyStack( stack& s );/ 销毁栈 s 结构/ queue 类型void InitQueue( queue& q );/ 初始化 q为空栈void EnQueue( queue& q , char x );II

6、 将元素 x插入 q 的队尾void Dequeue( queue& q);/ 删除 q中队头元素char GetHead( queue& q );/ 返回 q 中队头元素bool QEmpty( queue& q);/若队列 q 为空则返回 TRUE, 否则返回 FALSEvoid ClearQueue( queue& q );/将队列 q清空int QueueLength( queue& q );/返回队列q 中元素个数void DestroyQueue( queue& q );/销毁队列q 结构17. 试写一个算法,识别依次读入的一个以 为

7、结束符的字符序 列是否为形如 '序列 1& 序列 2'模式的字符序列。其中序列 1 和序列 2中都不含字符&,且序列2是序列1的逆序列。例如,a+b&b+a'是 属该模式的字符序列,而 ' 1 +3&3-1 '则不是。bool matching(char* str)/ 若给定字符串 str 为形如 "序列 1&序列 2" 的对称字符串II (序列2是序列1的逆串),则返回true,否则返回false19. 假设一个算术表达式中可以包含三种括号:圆括号 "("和")&

8、quot;,方括号""和""和花括号 ""和"" ,且这三种括号可按任意的次序嵌套使 用(如:()编写判别给定表达式中 所含括号是否正确配对出现的算法 (已知表达式已存入数据元素为字符的顺序表中 )。bool match_check( SqList exp )/ 若给定的表达式 exp 中的三种括号: ()、和 均配对出现,/ 则返回 "true" ,否则返回 "false"21. 假设表达式由单字母变量和双目四则运算算符构成。试写一个 算法,将一个通常书写形式且书写正确的表

9、达式转换为逆波兰式。void transformation(char* rs, SqList exp)II以字符串rs返回给定的表达式exp (以#为结束标志)/ 转换所得相应的后缀式22. 如题 21 的假设条件,试写一个算法,对以逆波兰式表示的表 达式求值。int valuation( SqList suffixal )II 返回由给定逆波兰式 suffixal 表示的表达式的值。28. 假设以带头结点的循环链表表示队列,并且只设一个指针指向 队尾元素结点 (注意不设头指针 ),试编写相应的队列初始化、入队列和出队列的算法。void Init_Queue(LinkQueue& re

10、ar)II rear 是指向以循环链表表示的队列的队尾指针, 初始化该循环链表队列。30. 假设将循环队列定义为: 以域变量 rear 和 length 分别指示循 环队列中队尾元素的位置和内含元素的个数。 试给出此循环队列的队 满条件,并写出相应的入队列和出队列的算法 (在出队列的算法中要返回队头元素 )。bool En_CQueue( CyclicQueue& Q, ElemType x )/ Q 是一个由其尾指针和队列长度标识的循环队列,若队列不满,/ 则将 x 插入至队尾,并返回 true ;否则返回 false31.假设称正读和反读都相同的字符序列为”回文",例如,'abba'和 'abcba是回文,abcde'和ababab'则不是回文。试写一个算法判别读入的一个以 ''为结束符的字符序列是否是 "回文"。bool matching(char* rs)/ rs 为一个随机产生的未知长度的(以 为结束符的)字符序列,/若是”回文”,则返回"true",否则返回"false"。一、设计一个递归函数,对长度为 n的一维数组A,进行下列运算: 求数组 A 的最大值。求数组 A 中 n 个整数的平均值。在数组A中查找指定元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论