实验二 栈和队列的基本操作
一、实验目的
1、掌握栈的顺序存储结构。
2、掌握栈特点,即先进后出原则。
3、掌握栈基本操作实现方法。
4、熟练掌握顺序队、链队的存储原理;
5、熟练掌握顺序队、链队的Java语言实现方法;
6、掌握队列空、队满的判断条件;
7、了解循环队列与普通队列实现上的不同及其解决方法。
二、实现内容
[问题描述]
1、栈
首先创建栈,并置top指针为-1,栈处于空的状态。
第二入栈,先判断栈是否是满栈。满栈的话,不做入栈操作,未满的话,做入栈
操作。
第三出栈,先判断栈是否为空,如果是空栈的话,不能做出栈操作,非空的话做
出栈操作。
2、队列
首先创建空队,置队首指针,队尾指针为0和-1
第二入队操作,判断队列是否已满,队满的话,不能入队,未满的话,做入队操
作。
第三出队操作,判断队是否为空,如果空队的话,不能出队,未空的话,做处队
操作。
[基本要求]用顺序存储结构实现存储
[实现提示]顺序存储结构是随机存储结构,直接数组来存储相关数据,用下标来表
示栈顶,数据存储从下标0开始存储数据。
循环队列的处理可以用指针回绕的方式来实现,
[程序实现]
见书本 48-55 页程序实例
三、实验要求
1、编程实现26个英文字母的顺序栈或链栈存储;
2、要求先把“A~Z”26个英文字母压入栈,然后再弹出所有字母;
3、编程实现26个英文字母的顺序队或链队存储;
4、要求先把“A~Z”26个英文字母入队,然后让所有字母出队;
四、思考题
1、入栈操作和出栈操作的算法过程是如何的?数据输出和top指针的变化的顺序在
出栈入栈过程中有何不同。
2、出队入队操作的算法过程是如何的?循环队列和顺序队的操作有何不同?