资源描述:
《堆栈的初始化,入栈,出栈,取栈顶元素》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、堆栈的初始化,入栈,出栈,取栈顶元素#include#include#include#defineMAX5//定义堆栈最大容量enumBOOL{False,True};//定义BOOL型typedefstruct//定义堆栈结构{charelem[MAX];//栈区inttop;//栈顶指针}SqStack;voidInitial(SqStack&);//初始化一个堆栈BOOLPush(SqStack&,char);//将一个元素入栈BOOLPop(SqStack&,char&);
2、//将一个元素出栈BOOLGettop(SqStack,char&);//得到栈顶元素voidSqStackPrint(SqStack);//显示栈中所有元素voidmain(){SqStackSt;intflag=1;charj,ch;BOOLtemp;//---------------------程序解说-----------------------printf("本程序实现顺序结构的堆栈的操作。");printf("可以进行入栈,出栈,取栈顶元素等操作。");//------------------------------
3、----------------------Initial(St);//初始化堆栈Swhile(flag){printf("请选择:");printf("1.显示栈中所有元素");printf("2.入栈");printf("3.出栈");printf("4.取栈顶元素");printf("5.退出程序");scanf("%c",&j);switch(j){case'1':SqStackPrint(St);break;case'2':printf("请输入要入栈的元素(一个字符):");scanf("%c",&c
4、h);//输入要入栈的元素temp=Push(St,ch);//入栈if(temp==False)printf("堆栈已满!入栈失败!");else{printf("成功入栈!");//成功入栈SqStackPrint(St);}break;case'3':temp=Pop(St,ch);//出栈if(temp==False)printf("堆栈已空!");else{printf("成功出栈一个元素:%c",ch);//成功出栈SqStackPrint(St);}break;case'4':temp=Gettop(St,
5、ch);//取得栈顶元素if(temp==False)printf("堆栈已空!");elseprintf("栈顶元素是:%c",ch);//显示栈顶元素break;default:flag=0;printf("程序结束,按任意键退出!");}}getch();}voidInitial(SqStack&S){S.top=-1;//栈顶指针初始化为-1}BOOLPush(SqStack&S,charch){//将元素ch入栈,成功返回True,失败返回Falseif(S.top>=MAX-1)returnFalse;//判断是
6、否栈满else{S.top++;//栈顶指针top加一S.elem[S.top]=ch;//入栈returnTrue;}}BOOLPop(SqStack&S,char&ch){//将栈顶元素出栈,成功返回True,并用ch返回该元素值,失败返回Falseif(S.top<=-1)returnFalse;//判断是否栈空else{S.top--;//栈顶指针减一ch=S.elem[S.top+1];returnTrue;}}BOOLGettop(SqStackS,char&ch){//取得栈顶元素,成功返回True,并用ch返回该元素值,
7、失败返回Falseif(S.top<=-1)returnFalse;else{ch=S.elem[S.top];//显示栈顶元素returnTrue;}}voidSqStackPrint(SqStackS){//显示栈中所有元素inti;if(S.top<=-1)printf("堆栈已空!");else{printf("堆栈所有元素:");for(i=0;i<=S.top;i++)printf("%c",S.elem[i]);printf("");}}