栈的顺序存储结构
#define maxsize 50
typedef int ElemType;
typedef struct {
ElemType data[maxsize];
int top;
}SqStack;
顺序栈的基本算法
初始化栈
cpp
void InitStack(SqStack *s){
s.top=-1;
return;
}
判断栈空
cpp
bool IsEmptyStack(SqStack *s){
if(s.top==-1){
return true;
}else{
return false;
}
}
进栈
cpp
bool Push(SqStack *s,ElemType e){
if(s.top==maxsize-1){ //栈满
return false;
}else{
s.top++;
s.data[s.top]=e;
return true;
}
}
出栈
cpp
bool Pop(SqStack *s,ElemType &e){
if(IsEmptyStack(s)){ //栈空
return false;
}else{
e=s.data[s.top];
s.top--;
return true;
}
}
读栈顶元素
cpp
bool GetTop(SqStack *S,ElemType &e){
if(IsEmptyStack(s)){ //栈空
return false;
}else{
e=s.data[s.top];
return true;
}
}
总代码
cpp
#include <stdio.h>
#define maxsize 50
typedef int ElemType;
typedef struct {
ElemType data[maxsize];
int top;
}SqStack;
void InitStack(SqStack *s){
s.top=-1;
return;
}
bool IsEmptyStack(SqStack *s){
if(s.top==-1){
return true;
}else{
return false;
}
}
bool Push(SqStack *s,ElemType e){
if(s.top==maxsize-1){ //栈满
return false;
}else{
s.top++;
s.data[s.top]=e;
return true;
}
}
bool Pop(SqStack *s,ElemType &e){
if(IsEmptyStack(s)){ //栈空
return false;
}else{
e=s.data[s.top];
s.top--;
return true;
}
}
bool GetTop(SqStack *S,ElemType &e){
if(IsEmptyStack(s)){ //栈空
return false;
}else{
e=s.data[s.top];
return true;
}
}
int main() {
return 0;
}