数据结构实验二(栈和队列)

实验二 栈和队列的基本操作及其应用

一、实验目的

1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。

2、掌握栈和队列的特点,即后进先出和先进先出的原则。

3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。

二、实验内容

本次实验提供2个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况任选一个!

题目一:回文判断(*)

[问题描述]

对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。

[基本要求]

(1)数据从键盘读入;

(2)输出要判断的字符串;

(3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出

“Yes”,否则输出“No”。

[测试数据]

由学生任意指定。

题目二:栈和队列基本操作

[基本要求]

1、实现栈的基本操作

六项基本操作的机制是:初始化栈:init_stack(S);判断栈空:stack_empty(S);取栈顶元素:stack_top(S,x);入栈:push_stack(S,x);出栈:pop_stack(S);判断栈满:stack_full(S)

2、实现队列的基本操作

六项基本操作的机制是:初始化队列:init_queue(Q);判断队列是否为空:queue_empty(Q);取队头元素:queue_front(Q,x);入队:enqueue(Q,x);出队:outqueue(Q,x);判断队列是否为满:queue_full(Q)

[测试数据]

由学生任意指定。

题目三:商品货架管理(**)

[问题描述]

商店货架以栈的方式摆放商品。生产日期越新的越靠近栈底,出货时从栈顶取货。

一天营业结束,如果货架不满,则需上货,也就是将商品摆放到货架上,要求生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越新的越靠近栈底。

[基本要求]

设计一个算法,保证每一次上货后保持生产日期越新的商品越靠近栈底。

[实现提示]

可以用一个队列和一个临时栈作为周转。

[测试数据]

由学生任意指定。

三、实验前的准备工作

1、掌握栈的逻辑结构和存储结构。

2、熟练掌握栈的出栈、入栈等操作。

3、掌握队列的逻辑结构和存储结构。

4、熟练掌握队列的出队、入队等操作

四、实验报告要求

1、实验报告要按照实验报告格式规范书写。

*2、写出算法设计思路。

3、实验上要写出多批测试数据的运行结果。

4、结合运行结果,对程序进行分析。

题目四:Rails(ACM训练题)

Description

There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned out that the

station could be only a dead-end one (see picture) and due to lack of available space it could have only one track.

The local tradition is that every train arriving from the direction A continues in the direction B with coaches reorganized in some way. Assume that the train arriving from the direction A has N

Input

The input consists of blocks of lines. Each block except the last describes one train and possibly more requirements for its reorganization. In the first line of the block there is the integer N described above. In each of the next lines of the block there is a permutation of 1, 2, ..., N. The last line of the block contains just 0.

The last block consists of just one line containing 0.

Output

The output contains the lines corresponding to the lines with permutations in the input.

A line of the output contains Yes if it is possible to marshal the coaches in the order required on the corresponding line of the input. Otherwise it contains No. In addition, there is one empty line after the lines corresponding to one block of the input. There is no line in the output corresponding to the last ``null'' block of the input.

Sample Input 5

1 2 3 4 5 5 4 1 2 3 0

6

6 5 4 3 2 1 0

Sample Output Yes

No

Yes

实验二 栈和队列的基本操作及其应用

一、实验目的

1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。

2、掌握栈和队列的特点,即后进先出和先进先出的原则。

3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。

二、实验内容

本次实验提供2个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况任选一个!

题目一:回文判断(*)

[问题描述]

对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。

[基本要求]

(1)数据从键盘读入;

(2)输出要判断的字符串;

(3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出

“Yes”,否则输出“No”。

[测试数据]

由学生任意指定。

题目二:栈和队列基本操作

[基本要求]

1、实现栈的基本操作

六项基本操作的机制是:初始化栈:init_stack(S);判断栈空:stack_empty(S);取栈顶元素:stack_top(S,x);入栈:push_stack(S,x);出栈:pop_stack(S);判断栈满:stack_full(S)

2、实现队列的基本操作

六项基本操作的机制是:初始化队列:init_queue(Q);判断队列是否为空:queue_empty(Q);取队头元素:queue_front(Q,x);入队:enqueue(Q,x);出队:outqueue(Q,x);判断队列是否为满:queue_full(Q)

[测试数据]

由学生任意指定。

题目三:商品货架管理(**)

[问题描述]

商店货架以栈的方式摆放商品。生产日期越新的越靠近栈底,出货时从栈顶取货。

一天营业结束,如果货架不满,则需上货,也就是将商品摆放到货架上,要求生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越新的越靠近栈底。

[基本要求]

设计一个算法,保证每一次上货后保持生产日期越新的商品越靠近栈底。

[实现提示]

可以用一个队列和一个临时栈作为周转。

[测试数据]

由学生任意指定。

三、实验前的准备工作

1、掌握栈的逻辑结构和存储结构。

2、熟练掌握栈的出栈、入栈等操作。

3、掌握队列的逻辑结构和存储结构。

4、熟练掌握队列的出队、入队等操作

四、实验报告要求

1、实验报告要按照实验报告格式规范书写。

*2、写出算法设计思路。

3、实验上要写出多批测试数据的运行结果。

4、结合运行结果,对程序进行分析。

题目四:Rails(ACM训练题)

Description

There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned out that the

station could be only a dead-end one (see picture) and due to lack of available space it could have only one track.

The local tradition is that every train arriving from the direction A continues in the direction B with coaches reorganized in some way. Assume that the train arriving from the direction A has N

Input

The input consists of blocks of lines. Each block except the last describes one train and possibly more requirements for its reorganization. In the first line of the block there is the integer N described above. In each of the next lines of the block there is a permutation of 1, 2, ..., N. The last line of the block contains just 0.

The last block consists of just one line containing 0.

Output

The output contains the lines corresponding to the lines with permutations in the input.

A line of the output contains Yes if it is possible to marshal the coaches in the order required on the corresponding line of the input. Otherwise it contains No. In addition, there is one empty line after the lines corresponding to one block of the input. There is no line in the output corresponding to the last ``null'' block of the input.

Sample Input 5

1 2 3 4 5 5 4 1 2 3 0

6

6 5 4 3 2 1 0

Sample Output Yes

No

Yes


相关内容

  • 栈和队列实验报告
  • 栈 的 顺 序 表 示 和 实 现 一.实验目的 1. 了解栈和队列的特性. 2. 掌握栈的顺序表示和实现. 3. 掌握栈的链式表示和实现. 4. 掌握队列的顺序表示和实现. 5. 掌握队列的链式表示和实现. 6. 掌握栈和队列在实际问题中的应用. 二.实验要求 1. 认真阅读和掌握本实验的程序. ...

  • [数据结构]教学大纲
  • <数据结构>教学大纲 Data Structure 课程编号:J6110G0003 课程性质:学科基础课程 适用专业:计算机科学与技术.网络工程.数字媒体技术 先行课:计算机科学导论.离散数学.高级语言程序设计: 后续课:无 . 学分数:5 主讲教师:任燕.王命延.冯豫华.周石林.王玮立 ...

  • 栈与队列的应用
  • 浙江大学城市学院实验报告 课程名称 数据结构基础 实验项目名称 实验九 栈与队列的应用 学生姓名 专业班级 学号 实验成绩 指导老师(签名 ) 日期 05 05 一. 实验目的和要求 1.学会通过对问题的分析,设计一种合理的数据结构,并进行定义及操作的实 现. 2.掌握利用栈和队列的各种操作来进行具 ...

  • 队列的应用
  • <算法与数据结构>实验报告 实验题目:队列的应用 1.实验目的: (1)掌握队列的特点及其存储方法: (2)掌握队列的常见算法和程序实现. 2.实验内容:火车车厢重排问题. 3.实验说明: 转轨站示意图如下: 火车车厢重排过程如下: 2 (a) 将369.247依次入缓冲轨 2 将8入缓 ...

  • 数据结构银行排队系统实验报告
  • Assignment 1:ADT Applications Task 2 133490*** 实验过程: 在这个实验程序中,我认为,难点在于如何运用队列储存顾客等候情况.银行窗口如何设置实现显示当前顾客序号以及数据的统计和打印. 题目描述中,有两个模拟版本,分别是单队列与多队列.由于个人能力的原因, ...

  • 实验报告--栈和队列的应用
  • 实验5 栈和队列的应用 目的和要求: (1)熟练栈和队列的基本操作: (2)能够利用栈与队列进行简单的应用. 一.题目 题目1.利用顺序栈和队列,实现一个栈和一个队列,并利用其判断一个字符 串是否是回文.所谓回文,是指从前向后顺读和从后向前倒读都一样的字符串. 例如,a+b&b+a等等. 题 ...

  • 停车场管理问题实验报告
  • 停车场管理问题实验报告 一.需求分析 1.用顺序存储结构模拟停车场,停车场最多停放n辆汽车.所以最大存储长度MAXINITSIZE=N,经过预处理 #define N 2,设置N为2. 2.当停车场内已停满n辆汽车,则后来的汽车只能在门外的便道等候.用先进先出的队列表示便道. 3.用户输入" ...

  • 操作系统进程调度实验报告
  • 学院 姓名 学号 教师评定_________________ 实验题目 进程调度 一.实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.实验内容和要求 设计一个有N个进程并发的进程调度程序,要采用FIFO(先进先出).简单时间片轮转法.多级反馈队列调度算法 ...

  • 队列的实现和应用
  • 班级 信工132 学号[1**********]0姓名王甜甜 实验组别 实验日期 室温 报告日期 成绩 报告内容:(目的和要求.原理.步骤数据.计算.小结等) 实验名称: 队列的实现和应用 实验目的:1. 掌握队列的定义. 2. 掌握队列基本操作的实现. 实验环境(硬/软件要求): Window 2 ...