文档介绍:数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
实验编号:3 四川师大《数据结构》实验报告 2016年10月29日
实验三 栈与队列及其应用_
实验目的及要求
掌握栈与队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们;
本实验训练的要点就是“栈”的观点及其典型用法;
掌握问题求解的状态表示及其递归算法,以及由递归程序到非递归程序的转化方法。
实验内容
编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等);
应用栈的基本操作,实现数制转换(任意进制);
编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);
利用栈实现任一个表达式中的语法检查(括号的匹配)。
利用栈实现表达式的求值。
注:(1)~(3)必做,(4)~(5)选做。
主要仪器设备及软件
(1) PC机
(2) Dev C++ ,Visual C++, VS2010等
实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)
编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等);
A、顺序储存:
代码部分:
//Main、cpp:
#include"SStack、h"
int main()
{
SqStack S;
SElemType e;
int elect=1;
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
InitStack(S);
cout << "已经创建一个存放字符型的栈" << endl;
while (elect)
{
Muse();
cin >> elect;
cout << endl;
switch (elect)
{
case 1:
cout << "input data:";
cin >> e;
Push(S, e);
break;
case 2:
if(Pop(S, e))
{cout << e <<" is pop"<< endl; }
else{cout<<"blank"<<endl;}
break;
case 3:
if (StackEmpty(S))
{
cout << "栈空 " << endl;
}
else
{
cout << "栈未空 " << endl;
}
break;
case 4:
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
GetTop(S, e);
cout << "e is " << e << endl;
break;
case 5:
StackLength(S);
break;
case 0:break;
}
}
DestroyStack(S);
return OK;
}
//SStack、cpp:
#include"SStack、h"
//输出菜单
void Muse()
{
cout << "请选择功能:" << endl;
cout << " 1、入栈" << endl;
cout << " 2、出栈" << endl;
cout << " 3、判栈空" << endl;
cout << " 4、返回栈顶部数据" << endl;
cout << " 5、栈长" << endl;
cout << " 0、退出系统" << endl;
cout << "您的选择就是:" ;
}
//创建栈
Status InitStack(SqStack &S)
{
S、base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
数据结构_实验三_栈和队列及其应用
if (!S、base) exit(ERROR);
S、top = S、base;
S、stacksize = STACK_INIT_SIZE;
retu