实验三栈和队列及其应用(I)讲解

  • 格式:doc
  • 大小:100.00 KB
  • 文档页数:9

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名学号

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"

/************************************************************

* 功能函数声明区

************************************************************/

/* ---------栈--------- */