小伙伴们,你们好鸭!今天我来分享一下顺序栈的创建以及堆栈、弹栈、取栈顶元素操作的具体实现。顺序栈和先前的顺序表类似,下面我们开始吧!
说明:小编也是刚学习这门课程,如有错误,请联系小编,小编及时改正。
思路:
1.创建结构体(定义栈的大小)
2.初始化
3.堆栈
4.弹栈
弹栈时,弹出的元素要使top指针向下移动一位。
5.取栈顶元素
具体代码实现:
//顺序栈
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
//创建结构体
typedef struct Sqstrack{
int data[MAXSIZE];
int base;
int top;
}Sqstrack;
//初始化
void initstrack(Sqstrack* S){
S->top=0;
S->base=S->top=S->data[S->top];
}
//压栈
void Push(Sqstrack* S,int elem){
if (S->top==MAXSIZE){
printf("栈满");
return;
}
else{
S->data[S->top]=elem;
S->top++;
S->base=elem;
}
}
//弹栈
void Pop(Sqstrack* S){
if (S->top==S->base){
printf("栈空,出栈失败");
return;
}else{
S->top--;
}
}
//取栈顶元素
void GetTop(Sqstrack* S){
if (S->top==S->base){
printf("栈空,取栈失败");
return;
} else{
printf("%d\n",S->data[S->top-1]);
}
}
int main(){
Sqstrack s ;
initstrack(&s);
Push(&s,10);
Push(&s,20);
Push(&s,30);
GetTop(&s);
Pop(&s);
GetTop(&s);
return 0;
}