1 / 33
文档名称:

数据结构 实验三 栈和队列及其应用.doc

格式:doc   大小:391KB   页数:33页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构 实验三 栈和队列及其应用.doc

上传人:aibuaiwo1318 2018/4/18 文件大小:391 KB

下载得到文件列表

数据结构 实验三 栈和队列及其应用.doc

相关文档

文档介绍

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