#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
星梦情缘 阅读(2605)
评论(6) 编辑 收藏 引用 所属分类:
活动程序