标签:define 修改 status 链栈 return sel 失败 type 顺序
一、顺序栈的表示与实现
1.顺序栈的存储结构
#define MAXSIZE 100
typedef struct
{
SElemType *base;(栈底指针,始终指向栈底的位置)
SElemType *top;(栈顶指针)
int stacksize;
}SqStack;
2.初始化
status InitStack(SqStack &S)
{
S.base= new SElemType[MAXSIZE];
if(!S.base) exit (OVERFLOW);(若分配失败)
S.top = S.base;(top初始为base,空栈)
S.stacksize = MAXSIZE;
return OK;
}
3.入栈
Status Push(SqStack &S, SElemType e)
{
if(S.top - S.base == S.stacksize) return ERROR;(栈满)
*S.top++ = e; (e先入栈,栈顶指针S.top再加1)p59分析运算符的先后顺序
return OK;
}
4.出栈
Status Pop(SqStack &S, SElemType &e)
{
if(S.top == S.base) return ERROR;(栈空)
e = *--S.top;(栈顶指针S.top先减1,再将栈顶元素赋给e出栈)p59分析运算符的先后顺序
return OK;
}
5.取顺序栈的栈顶元素
SElemType GetTop(SqStack S)
{
if (S.top != S.base) (栈非空)
return *(S.top - 1);(返回栈顶元素的值,栈顶指针不变)
}
二、链栈的表示与实现
1.链栈的存储结构
typedef struct StackNode
{
ElemType data;(数据域)
struct StackNode *next;(指针域)
} StackNode, *LinkStack;(结构体,指针变量)
2.初始化
Status InitStack(LinkStack &S)
{
S = NULL;
return OK;
}
3.入栈
Status Push(LinkStack &S , SElemType e)
{
p = new StackNode;(生成新结点,得到首地址值并赋给p)
p->data = e;
p->next = S;
S = p;(修改栈顶指针为p)
return OK;
}
4.出栈
Status Pop(LinkStack &S,SElemType &e )
{
if(S=NULL) return ERROR;(栈空)
e = S->data;
p = S;
S = S->next;(指向新的栈顶元素)
delete p;
return OK;
}
5.取栈顶元素
SElemType GetTop(LinkStack S)
{
if (S != NULL);
return OK;
}
标签:define 修改 status 链栈 return sel 失败 type 顺序
原文地址:https://www.cnblogs.com/wdaotu/p/10618541.html