04栈

# 栈

**定义**——栈( stack)是限定仅在表尾巴插入和删除操作的线性表

- 允许插入和删除的一段称为**栈顶**(top),另一端称为**栈底**(bottom)
- 不放任何数据元素的栈称为**空栈**



**特点**

- 先进后出
- 后进先出



**注意:**

- 栈又被称为后进先出(Last In First Out)的**线性表**,简称LIFO结构
- 栈的插入操作,称为**进栈**,也称压栈、入栈(push)
- 栈的删除操作,称为**出栈**,也称为弹栈(pop)



**栈的抽象数据结构**

![img](https://img-blog.csdnimg.cn/20200615233006898.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjI0ODg3MQ==,size_16,color_FFFFFF,t_70)![点击并拖拽以移动](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)



## **栈的链式存储结构——链栈**

**链栈**

- 链栈的结构与链表相似
- 插入与删除操作都是在链表的头部
- 即:链栈是一个以top为头结点、从链顶指向链底的单链表

typedef struct node //栈中的节点
{
char data; //节点数据
struct node *next;//指向下一个结点的指针(链表)
}StackNode;
typedef struct{
StackNode *top;//栈顶指针
int count; //节点个数
}ListStack;

posted @ 2022-01-03 21:32  小白学安全  阅读(53)  评论(0)    收藏  举报