什么是栈呢?栈的概念
栈(stack):是一种线性 连续存储 的数据结构
那栈又具有什么样的特点呢?
栈是一种先进后出,后进先出的数据结构。
它又分成了栈顶和栈底,在栈顶进行元素的插入和删除
![](https://i-blog.csdnimg.cn/blog_migrate/408e9f1733698c35436d704a44c90745.png)
栈的基本操作又包括哪些呢?
栈的操作包括:入栈(push) 和 出栈(pop)
入栈时,我们需要注意:栈是否存在,栈是否为满
出栈时,我们需要注意:栈是否不存在,栈是否已空
敲下代码,以便更好理解。代码如下:
顺序栈:
我们先定义栈的结构体
struct stack{
int a[MAX]; //数据域
int top; //栈顶指针,其实就是数组的下标
};
定义一个全局栈
struct stack li; //全局栈
入栈函数
![](https://i-blog.csdnimg.cn/blog_migrate/52bd441828684960b06d28c3cdacf67d.gif)
int push(){
//先判断是否栈满
if(li.top == MAX-1){
printf("栈满");
return 0;
}
//栈不满的时候
li.top++; //栈顶+1
//输入入栈的数据
printf("请输入入栈数据:");
scanf("%d",&li.a[li.top]);
}
出栈函数
![](https://i-blog.csdnimg.cn/blog_migrate/8b431c0a499f8c3aeade8167c45b995d.gif)
int pop(){
//先判断是否为空
if(li.top==-1){
printf("栈空");
return 0;
}
//先取出元素
printf("出栈元素:%d\n",li.a[li.top]);
li.top--; //栈顶-1
}
以上呢是关于我们顺序栈的代码!!!