预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共32页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

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