《数据结构》习题集:第3章 栈和队列(2)

2020-03-27 12:59

数据结构课后练习题 第3章 栈和队列

7. 按照运算符优先数法,画出对下面算术表达式求值时,操作数栈和运算符栈的变化过程:

9-2*4+(8+1)/3。

8. 设栈S=(1,2,3,4,5,6,7),其中7 为栈顶元素。写出调用algo 后栈S 的状态。

void algo(Stack *S){ int i=0; Queue Q; Stack T;

InitQueue(Q); InitStack(T);

while(!StackEmpty(S)){

if(i%2==0)

Push(T,Pop(S)); else

EnQueue(Q,Pop(S)); i++; }

while(!QueueEmpty(Q))

Push(S,DeQueue(Q)); while(!StackEmpty(T))

Push(S,Pop(T)); }

五、 设计题

1. 在栈顶指针为 HS 的链栈中,写出计算该链栈中结点个数的函数?

2. 已知 Q 是一个非空队列,S 是一个空栈,使用C 语言编写一个算法,仅用队列和栈的ADT 函数和少量工作

变量,将队列Q 中的所有元素逆置。

栈的ADT 函数有:

void SetEmpty(stack s); //置空栈

void Push(stack s,ElemTye value); //新元素value 进栈 ElemType Pop(stack s); //出栈,返回栈顶值 Boolean IsEmptyS(stack s); //判断栈空否 队列ADT 的函数有:

void EnQueue(Queue q,ElemType value); //元素入队 ElemType DeQueue(Queue q); //出队列返回队头值 Boolean IsEmptyQ(Queue q); //判断队列是否为空

3. 用单链表实现队列,如下图所示,并令 front=rear=NULL 表示队列为空,编写实现队列的如下五种运算的函数。

Setnull:将队列置成空队列。

getfirst:返回队列的第一个元素。 enqueue:把元素插入队列的后端。 dequeue:删除队列的第一个元素。 empty:判定队列是否为空。

6/7

北京理工大学珠海学院计算机学院 “数据结构”课程组编制 2011-3-1

数据结构课后练习题 第3章 栈和队列

4. 有 A,B,C 三个塔座,A 上套有n 个直径不同的圆盘,按直径从大到小叠放,形如宝塔,编号1,2,3??n。要求

将n 个圆盘从A 移到C,叠放顺序不变,移动过程中遵循下列原则:

a) 每次只能移一个圆盘

b) 圆盘可在三个塔座上任意移动

c) 任何时刻,每个塔座上不能将大盘压到小盘上

5. 回文游戏:顺读与逆读字符串一样(不含空格)

6. 数制转换:对于输入的任意一个非负十进制数,打印输出与其等值的八进制数。(利用栈) 7. 括号匹配检验:假设在表达式中有三种括号( ){ } [ ],检查表达式括号是否配对。

8. 行编辑程序问题:在用户输入一行的过程中,允许用户输入出差错,并在发现有误时可以及时更正。

要求: 设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区,并假设“#”为退

格符,“@”为退行符。(利用栈来完成)

7/7

北京理工大学珠海学院计算机学院 “数据结构”课程组编制 2011-3-1


《数据结构》习题集:第3章 栈和队列(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“为何从警、如何做警、为谁用警”大讨论心得体会2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: