实验三栈和队列及其应用(I)讲解
- 格式:doc
- 大小:100.00 KB
- 文档页数:9
姓名学号
void print(void);
int main(void)
{
system("title 数据结构实验实验三:栈和队列及其应用(I) "); //设置cmd窗口标题
system("color F1"); //设置控制台窗口的背景色和前景色
system("date /T"); //输出当前的日期
print();
cout << "实验内容一:采用顺序存储结构,实现栈的存储和基本操作"<< endl;
SqStack S;
SElemType e;
InitStack_Sq(S); //构造一个空栈S
int count;
cout << "请输入需入栈的元素个数:N = ";
cin >> count;
cout << "请输入元素:";
for (int i = 0; i < count; i++)
{
cin >> e;
Push_Sq(S, e);
}
GetTop_Sq(S, e);
cout << " 栈顶元素:" << e << endl;
cout << " 出栈:";
while ((Pop_Sq(S, e)))
cout << e << " ";
cout << endl << "栈的应用:"<< endl << "1.将十进制数转换为二进制数"<< endl;
DecToBin(); //将十进制数转换为二进制数cout << "2.汉罗塔问题" << endl << " 请输入圆盘个数:";
int n; //圆盘个数
char x = 'A', y = 'B', z = 'C';
cin >> n;
cout << "圆盘移动步骤:";
Hanoi(n, x, y, z);
DestoryStack_Sq(S); //销毁栈S
cout << endl;
print();
cout << "实验内容二:采用顺序存储结构,实现队列的存储和基本操作" << endl;
SqQueue Q;
QElemType data;
InitQueue_Sq(Q); //构造一个空队列Q
cout << "请输入需入队列的元素个数:N = ";
cin >> count;
cout << "请输入元素:";
for (int i = 0; i < count; i++)
{
cin >> data;
EnQueue_Sq(Q, data);
}
GetHead_Sq(Q, data);
cout << " 队首元素:" << data << endl;
cout << " 出队列:";
while (DeQueue_Sq(Q, data))
cout << data << " ";
cout << endl;
print();
cout << endl;
}
void print(void)
{
cout << endl <<
"***********************************************************" << endl; }
2.头文件”ADT.h”的部分程序如下:
#ifndef ADT_H_
#define ADT_H_
/************************************************************
* 常量和数据类型预定义
************************************************************/
/* ------函数结果状态代码------ */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
/* ------数据类型预定义------ */
typedef int Status; //函数结果状态类型
typedef int_bool; //bool状态类型
/************************************************************
* 数据结构类型定义
************************************************************/
/************************栈和队列*************************/
/* ------栈数据类型定义------ */
typedef int SElemType; //顺序表中元素的数据类型
/* ------栈动态存储分配初始常量预定义------ */
#define STACK_INIT_SIZE 100 //栈表存储空间的初始分配量
#define STACKINCREMENT 10 //栈表存储空间的分配增量
/* ------顺序栈结构类型定义------ */
typedef struct
{
SElemType * base; //栈底指针
SElemType * top; //栈顶指针
int stacksize; //当前以分配的存储空间
}SqStack; //顺序栈结构类型
/* ------队列数据类型定义------ */
typedef int QElemType; //顺序表中元素的数据类型
/* ------队列动态存储分配初始常量预定义------ */
#define QUEUE_INIT_SIZE 100 //队列存储空间的初始分配量
#define QUEUEINCREMENT 10 //队列存储空间的分配增量
#define MAXQUEUESIZE 100 //循环队列最大长度
/* ------队列顺序存储结构类型定义------ */
typedef struct
{
QElemType *base; //队列初始化动态分配存储空间
int front; //对头指针向量,队列不空,指向队头元素int rear; //队尾指针向量,队列不空,指向队尾下一个位置
}SqQueue; //顺序队列结构类型
#endif/* ADT_H_ */
3.头文件"DataStructure_StackQueue.h"中部分函数定义如下:
#include
#include
#include"ADT.h"
/************************************************************
* 功能函数声明区
************************************************************/
/* ---------栈--------- */