#include<iostream>
using namespace std;
const int MAX_SIZE=100;
struct stack
{
int data[MAX_SIZE];
int top;
};
void InitializeStack(stack* point) //初始化栈
{
point->top=-1;
}
bool isEmpty(stack* point) //判断是否为空
{
if(point->top==-1)
return true;
else
return false;
}
bool isFull(stack* point) //判断是否为满
{
if(point->top==MAX_SIZE-1)
return true;
else
return false;
}
int pop(stack* point) //出栈
{
if(isEmpty(point))
{
cout<<"栈已空";
return 0;
}
int val=point->data[point->top];
point->top--;
return val;
}
void push(stack* point,int val) //入栈
{
if(isFull(point))
{
cout<<"栈已满";
return ;
}
point->top++;
point->data[point->top]=val;
}
int GetTop(stack* point) //获取栈顶元素
{
if(isEmpty(point))
{
cout<<"无栈顶元素";
return 0;
}
return point->data[point->top];
}
int main()
{
stack s1;
InitializeStack(&s1);
int n;
cout<<"请输入入栈元素个数:";
cin>>n;
cout<<"请依次输入入栈元素:";
for(int i=0;i<n;i++)
{
int val;
cin>>val;
push(&s1,val);
}
int topval;
for(int i=0;i<n;i++)
{
topval=GetTop(&s1);
cout<<"当前栈顶元素"<<topval<<" ";
cout<<pop(&s1)<<"出栈!";
}
return 0;
}
C++