c++,弹出栈,是怎么实现?怎么把栈顶顶删除?还是说使用的时候直接覆盖新值就是弹出了

2025-04-01 05:56:53
推荐回答(1个)
回答1:

#include"stdafx.h"#include"iostream.h"#include"stdlib.h"#defineMAXSIZE2//常量的定义//给int起一个datatype的别称,及datatype就是inttypedefintdatatype;//定义常量typedefstruct/结构体定义stackstruct{datatypestack[MAXSIZE];inttop;}Stack;Stack*s;voidInitStack(Stack*s){s->top=-1;}intEmpty(Stack*s){if(s->toptop)>=(MAXSIZE-1))return(1);elsereturn(NULL);}Stack*InStack(Stack*s,datatypex){if(Full(s)){printf("栈满,不能向栈中插入数据\n");return(false);}else{s->top++;printf("输入一个数据值:\n");scanf("%d",&x);s->stack[s->top]=x;printf("输入的数据是:%d\n",s->stack[s->top]);return(s);}}datatypeOutStack(Stack*s,datatypex){if(Empty(s)){printf("栈空,不能从栈中删除数据\n");return(NULL);}else{x=s->stack[s->top];printf("从栈中删除的数据是:%d\n",s->stack[s->top]);s->top--;return(x);}}voidmain(){datatypex=10;s=(Stack*)malloc(sizeof(Stack));InitStack(s);printf("已经对栈进行了初始化\n");intn;while(1){printf("//////////////////////////////////////////////////\n\n");printf("请选择您要实现的操作:\n");printf("输入0:退出\n输入1:向栈中插入数据\n输入2:从栈中删除数据\n");printf("//////////////////////////////////////////////////\n\n");printf("选择:");scanf("%d",&n);if((n!=0)&&(n!=1)&&(n!=2)){printf("输入错误\n");continue;}switch(n){case0:exit(0);case1:InStack(s,x);break;case2:OutStack(s,x);break;}