代码:
//下推栈的简单实现
#include<iostream>
using namespace std;
#define MAX 10
int *stack;
int N ;//stack size
void InitStack()
{
stack=(int *)malloc(sizeof(int)*MAX);
N=0;
}
int IsEmptyStack()
{
return N==0;
}
int StackPush(int Item)
{
if(N==MAX)
{
cout<<"full stack now,can not push!"<<endl;
exit(0);
}
stack[N++]=Item;
return Item;
}
int StackPop()
{
if(IsEmptyStack())
{
cout<<"empty stack now,can not pop!"<<endl;
exit(0);
}
return stack[--N];
}
int GetStackTop()
{
return stack[N-1];
}
int main(void)
{
int i;
InitStack();
if(IsEmptyStack())
{
cout<<"now ,stack is empty!"<<endl;
}
//StackPop();
cout<<"after the insertation,the stack is: "<<endl;
for(i=0;i<10;i++)
{
cout<<StackPush(i)<<"入栈"<<endl;
}
StackPush(10);
cout<<"此时,栈中有"<<N<<"个元素"<<endl;
cout<<"栈顶:"<<GetStackTop()<<endl;
for(i=0;i<5;i++)
{
cout<<StackPop()<<"出栈"<<endl;
}
cout<<"此时,栈中有"<<N<<"个元素"<<endl;
cout<<"栈顶: "<<GetStackTop()<<endl;
}