数据结构第二版(朱昌杰版)栈和队列二

基本操作: 初始化栈

InitStack(&S)

判断栈空

EmptyStack(&S);

判断栈满

StackFull(&S);

获取栈顶元素

GetTop(&S);

进栈

Push(&S);

出栈

Pop(&S);

正片开始 初始化栈

int InitStack(SqStack &s){
  S.top=-1;
  return OK;
    }

结构体先声明一下

#define MaxSize 100
typedef  struct{
	DataType data[Maxsize];
	int top;
}SqStack;

判断空

int StackEmpty(SqStack S){
	return (S.top==-1?TRUE:FALSE;);
}

判断栈满

int StackFull(SqStack S){
	return (S.top==maxsize-1?TRUE:FLASE;);
}

进栈

int Push(SqStack &S,DataType e){
	if(StackFull(S)) retuern ERROR;
	S.top++;
	S.data[S.top]=e;
	retuern OK;
}

出栈

int Pop(SqStack &S,DataType &e){
	if(StackEmpty(S)) return ERROR;
	e=S.data[top];
	S.top--;
	return OK;
}

取栈顶元素

int GetTOp(SqStack S,DataType &e){
	if(StackEmpty(S)) return ERROER;
	e=S.data[top];
	return OK;
}

以上是栈的顺序存储


接下来是链式存储 和链式存储相不同的是顺序是以数组实现,链式是用数组形成的,下一章节讨论

经验分享 程序员 微信小程序 职场和发展