c++实现栈

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:25:13
typedef char SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;

// 初识化栈
void InitStack( SqStack &S )
{
S.base = (SElemType*)malloc(STACK_INIT_SIZE * sizeof( SElemType));
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
}

// 释放栈
void ReleaseStack( SqStack &S )
{
free(S.base);
}

// 入栈
void Push(SqStack &S, SElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base = (SElemType*)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType));
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
}

// 出栈
void Pop(SqStack &S,SElemType &e)
{
//if(S.top == S.base);
e = *--S.top;
}

// 栈为空
int StackEmpty(SqStack &S)
{
if( S.top == S.base )
return 1;
else return 0;
}
/&#

if(S.top != S.base)
e = *--S.top;

没看你的程序。 新手程序员做题的时候常见的问题就是意外怎么处理。 其实这个是随便你处理, 你可以返回个错误标志或者打印个什么话, 都可以。 而实际使用当中情况是完全不同的, 这个只有你做了才知道, 现在不需要考虑