顺序栈

顺序栈:

#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;

}

posted @ 2012-07-24 19:37  紫素  阅读(166)  评论(0编辑  收藏  举报