#define stacksize 100//栈最大空间乎乎
typedef int elemtype;//栈中元素类型
typedef struct
{
int top;/岁银悉/栈顶指针
elemtype data[stacksize];
}stack;//顺序栈类型
void initstack(stack &s)//建立空栈
{
s.top=-1;
}
void push(stack &s,elemtype e)//压栈
{
if(s.top>=stacksize)
{
printf("full!");
return;
}
s.data[++s.top]=e;
}
void pop(stack &s,elemtype &e)//弹栈
{
if(s.top<=-1)
{
printf("empty stack!");
return;
}
e=s.data[s.top--];
}
bool stackempty(stack s)//判断栈非空搏耐
{
if(s.top==-1)return true;
return false;
}
//这里还要加入我们默认的常量头文件
#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<
}
Status visit(SElemType c)
{
cout<
}
给钱我给你源代码
你给我分我慢慢告诉你