#include<stdio.h>
#include<stdlib.h>
#define Max_Size 1000
typedef struct StackNode{
int data[Max_Size];
int top;
}SqStack;
//初始化,构造一个空栈
SqStack initStack(){
SqStack *S=(StackNode*)malloc(sizeof(SqStack));
S->top=-1;
return *S;
}
//判满
bool stackFull(SqStack S){
return S.top==Max_Size-1;
}
//插入元素,也称为入栈或进栈,在s栈的栈顶插入新的元素e
bool push(SqStack &S,int e){
if(stackFull(S))return false;
S.top++;
S.data[S.top]=e;
return true;
}
//判空,判断s栈是否为空栈
bool stackEmpty(SqStack S){
return S.top==-1;
}
//删除元素,也称出栈,获取s栈的栈顶元素e,并且删除
int pop(SqStack &S){
if(stackEmpty(S))return false;
int e=S.data[S.top];
S.top--;
return e;
}
//获取栈顶元素,但不删除
int getTop(SqStack S,int &e){
if(stackEmpty(S)){
return false;
}
e=S.data[S.top];
return e;
}
int main(){
SqStack stack=initStack();
//进栈
printf("Inserting elements into the stack:\n");
push(stack, 10);
push(stack, 20);
push(stack, 30);
//获取栈顶元素
int a=getTop(stack,a);
printf("%d\n",a);
//出栈
pop(stack);
//获取栈顶元素
int b=getTop(stack,b);
printf("%d\n",b);
// 输出整个栈
while (!stackEmpty(stack)) {
int e = pop(stack);
printf("%d ", e);
}
return 0;
}
顺序栈的基本操作
最新推荐文章于 2024-08-07 13:51:12 发布