欢迎来到天天文库
浏览记录
ID:10477889
大小:45.50 KB
页数:5页
时间:2018-07-06
《数据结构实验二栈与队列的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、广东工业大学实验报告信息工程学院电子信息工程专业班成绩评定学号姓名(合作者____号____)教师签名_______实验二题目栈与队列的应用一、实验目的熟练掌握栈结构及其应用。二、实验内容利用栈结构具有先进后出的特性,编程实现:输入一个任意十进制数,转换为八进制数进行输出。三、实验步骤1、定义栈结构typedefstruct{int*base;int*top;intstacksize;}SqStack;2.设计基本算法1)对栈进行初始化:StatusInitStack(SqStack&S){//构造一个空栈S.base=(Selemtype*)malloc(stack_siz
2、e*sizeof(ElemType));if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=stack_size;returnOK;}//InitStack2)返回栈顶函数:StatusGetTop(SqStackS,Selemtype&e){//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERRORif(S.top==S.base)returnERROR;e=*(S.top-1);returnOK;}//GetTop3)入栈函数StatusPush(SqStack&S,Selemtypee){//插入元素e为新的栈
3、顶元素if(S.top-S.base>=S.stacksize){//栈满,追加存储空间S.base=(ElemType*)realloc(S.base,(S.stacksize+stackincrement)*sizeof(ElemType));if(!S.base)exit(OVERFLOW);//存储分配失败S.top=S.base+S.stacksize;S.stacksize+=stackincrement;}*S.top++=e;returnOK;}//Push4)栈空处理函数StatusStackEmpty(SqStack&S){if(S.base==S.top
4、)returnOK;elsereturnERROR;}//StackEmpty5)出栈函数StatusPop(SqStack&S,Selemtype&e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK//,否则返回ERRORif(S.top==S.base)returnERROR;e=*--S.top;returnOK;}//Pop3.编写main()函数调用以上各函数,并进行调试,以验证在栈与队列的应用中,数制转换的实现.四、实验程序#include#include#defineOK1#defineERROR0#defin
5、eOVERFLOW-1#defineSTACK_INT_SIZE100//线性表存储空间的初始分配量#defineSTACKINCREMENT10//线性表存储空间的分配增量typedefintElemType;typedefintStatus;typedefintSelemtype;typedefstruct{int*base;int*top;intstacksize;}SqStack;StatusInitStack(SqStack&S){//构造一个空栈S.base=(int*)malloc(STACK_INT_SIZE*sizeof(ElemType));if(!S.b
6、ase)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INT_SIZE;returnOK;}//InitStackStatusGetTop(SqStackS,Selemtype&e){//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERRORif(S.top==S.base)returnERROR;e=*(S.top-1);returnOK;}//GetTopStatusPush(SqStack&S,Selemtypee){//插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize){//栈满,
7、追加存储空间S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));if(!S.base)exit(OVERFLOW);//存储分配失败S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;returnOK;}//PushStatusStackEmpty(SqStack&S){if(S.base==S.top)returnOK
此文档下载收益归作者所有