顺序栈
顺序栈:
#include <iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define Stack_Size 50
struct Stack
{
int elem[Stack_Size];
int top; /*用来存放栈顶元素的下标*/
};
void InitStack(Stack *s) /* 构建一个空栈S */
{
s->top=-1;
}
int IsEmpty(Stack *s)
{
return(s->top==-1? TRUE:FALSE);
}
int IsFull(Stack *s)
{
return(s->top==Stack_Size-1? TRUE:FALSE);
}
int Push(Stack *s,int x)
{
if(s->top==Stack_Size-1) return FALSE;
s->top++;
s->elem[s->top]=x;
return TRUE;
}
int Pop(Stack *s,int * x)/*将栈顶元素弹出,放到X所指的存贮空间中*/
{
if(s->top==-1)
return FALSE;
else
{
*x=s->elem[s->top];
s->top--;
return TRUE;
}
}
int GetTop(Stack *s,int * x)/*将栈顶元素弹出,放到X所指的存贮空间中,但栈顶指针保持不变*/
{
if(s->top==-1)
return FALSE;
else
{
*x=s->elem[s->top];
return TRUE;
}
}
int main()
{
Stack s,*S;
int x;
S=&s;
InitStack(S);
cout<<IsEmpty(S)<<endl;
Push(S,3);
if(GetTop(S,&x))
cout<<x<<endl;
Pop(S,&x);
cout<<IsFull(S)<<endl;
return 0;
}