资源描述:
《实验4顺序栈操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验4顺序栈的实现与插入删除操作(2学时)【教学目的】加深理解顺序栈的意义,理解用它的插入与删除操作的算法,学会灵活运用已有知识,拓广思路。【教学内容】1用数制的转换算法调试顺序栈的基本操作算法。编写主程序调用数制的转换算法conversion算法,再由conversion调用InitStack等算法。用不同的数制转换成不同的进制调试程序并对相应的输出作为分析;修改输入数据,预期输出并验证输出的结果,加深对Push和Pop算法的理解。2完成上机实验题3.1和进制转换问题程序编写并上机调试。【主要仪器】计算机【实验内容】4.1实现顺序栈的各种基本运算算法
2、编写一个程序,实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:(1)初始化栈s(2)判断栈s是否非空(3)依此进栈元素a,b,c,d,e(4)判断栈s是否非空(5)输出栈的长度(6)输出从栈顶到栈底的元素(7)输出出栈序列(8)判断栈s是否非空(9)释放栈/*文件名:algo4-1.cpp*/#include#include#defineMaxSize100typedefcharElemType;typedefstruct{ElemTypeelem[MaxSize];inttop;/*栈指针*/}
3、SqStack;voidInitStack(SqStack*&s){s=(SqStack*)malloc(sizeof(SqStack));s->top=-1;}voidClearStack(SqStack*&s){free(s);}intStackLength(SqStack*s){return(s->top+1);}intStackEmpty(SqStack*s){return(s->top==-1);}intPush(SqStack*&s,ElemTypee){if(s->top==MaxSize-1)return0;s->top++;s->el
4、em[s->top]=e;return1;}intPop(SqStack*&s,ElemType&e){if(s->top==-1)return0;e=s->elem[s->top];s->top--;return1;}intGetTop(SqStack*s,ElemType&e){if(s->top==-1)return0;e=s->elem[s->top];return1;}voidDispStack(SqStack*s){inti;for(i=s->top;i>=0;i--)printf("%c",s->elem[i]);printf("")
5、;}/*文件名:exp4-1.cpp*/#include#include#defineMaxSize100typedefcharElemType;typedefstruct{ElemTypeelem[MaxSize];inttop;/*栈指针*/}tSqStack;externvoidInitStack(SqStack*&s);externvoidClearStack(SqStack*&s);externintStackLength(SqStack*s);externintStackEmpty(SqStack*s)
6、;externintPush(SqStack*&s,ElemTypee);externintPop(SqStack*&s,ElemType&e);externintGetTop(SqStack*s,ElemType&e);externvoidDispStack(SqStack*s);voidmain(){ElemTypee;SqStack*s;printf("(1)初始化栈s");InitStack(s);printf("(2)栈为%s",(StackEmpty(s)?"空":"非空"));printf("(3)依次进栈元素a,b,c,d,e
7、n");Push(s,'a');Push(s,'b');Push(s,'c');Push(s,'d');Push(s,'e');printf("(4)栈为%s",(StackEmpty(s)?"空":"非空"));printf("(5)栈长度:%d",StackLength(s));printf("(6)从栈顶到栈底元素:");DispStack(s);printf("(7)出栈序列:");while(!StackEmpty(s)){Pop(s,e);printf("%c",e);}printf("");printf("(8)栈为%s"
8、,(StackEmpty(s)?"空":"非空"));printf("(9)释放栈");C