//------顺序栈的存储结构-----------
#define MAXSIZE 100
typedef int SElemType;
typedef int Status;
#define ERROR -1;
#define OK 0;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
//-------------顺序栈的初始化-----------------
Status InitStack(SqStack S)
{
S.base = new SElemType[MAXSIZE];
if(!S.base) exit(OVERFLOW);
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}
//------------入栈------------------------
Status Push(SqStack S, SElemType e)
{
if(S.top - S.base == S.stacksize) return ERROR;
*S.top = e;
S.top++;
return OK;
}
//------------------出栈-------------------
Status Pop(SqStack S, SElemType e)
{
if(S.top == S.base) return ERROR;
e = S.top;
S.top--;
return OK;
}
//------------------链栈的存储结构------------------------
typedef struct StackNode
{
ElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
//----------初始化--------------
Status InitStack(LinkStack S)
{
S = NULL;
return OK;
}
//----------入栈--------------
Status Push(LinkStack S,SElemType e)
{
StackNode *p;
p = (StackNode *)malloc(Sizeof(struct StackNode));
p->data = e;
p->next = S;
S = p;
return OK;
}
//-------------------出栈--------------
Status Pop(LinkStack S,SElemType e)
{
if(S==NULL) return ERROR;
StackNode *p;
p = S;
e = p->data;
S = S->next;
free(p);
}
栈的存储结构及操作
最新推荐文章于 2025-02-18 09:09:06 发布