#include "iostream.h"
//這里還要加入我們默認的常量頭文件
#include "head.h"
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base=new SElemType[STACK_INIT_SIZE];
if(!S.base) return OVERFLOW;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status DestroyStack(SqStack &S)
{
S.top=NULL;
S.base=NULL;
delete[] S.base;
S.stacksize=0;
return OK;
}
int StackEmpty(SqStack s)
{
if(s.top==s.base) return 1;
else return 0;
}
Status GetTop(SqStack &s,SElemType &e)
{
if(s.top==s.base) return ERROR;
e=*(s.top-1);
return OK;
}
int StackLength(SqStack s)
{
return s.top-s.base;
}
Status ClearStack(SqStack &S)
{
S.top=S.base;
return OK;
}
Status Push(SqStack &s,SElemType e)
{
if(s.top-s.base>=s.stacksize)
return OVERFLOW;
*s.top++=e;
return OK;
}
Status Pop(SqStack &s,SElemType &e)
{
if(s.top==s.base) return ERROR;
e=*--s.top;
return OK;
}
Status StackTraverse(SqStack s,Status(*visit)(SElemType c))//這個函數最后不要用,因為它已經破壞了棧的特性
{
while(s.top>s.base)
visit(*s.base++);
cout<<endl;
return OK;
}
Status visit(SElemType c)
{
cout<<c<<" ";
return OK;
}
posted on 2007-06-06 23:27
星夢情緣 閱讀(2622)
評論(6) 編輯 收藏 引用 所屬分類:
活動程序