学习 栈和队列 内容!
文章目录- 前言
- 一、简介
- 二、栈
- 介绍
- 三、栈实现
- 四、队列
- 介绍
结构:栈和队列都属于数据结构中的线性结构,有前驱和后继的概念。
特点:栈是后进先出,队列是先进先出。
明确:只要涉及到存储数据,一般都是设计数据结构。底层实现采用数组或链表。任何数据结构都是用来存放数据的,只不过不同的数据结构对数据的存取有着不同的要求。
- 类比生活中的叠盘子:先洗完的盘子肯定是放在最下面的然后其他的依次往上放,最后洗完的那个盘子肯定是放在最上面的,需要用的时候也是从上往下依次拿取。
- 对于放盘子相当于存数据(入栈操作),取盘子相当于取数据(出栈操作)。
- 操作:栈只能在一端(栈顶)进行存数据(入栈)和取数据(出栈),另一端(栈底)是封闭的。只能操作栈顶的数据 除了栈顶元素,其他元素是看不见的。
- 数据结构学习的难点:理解、代码实现
- 实现栈的方式:所有的数据结构都可以通过两个基本的数据结构数组和链表来实现,数组实现的栈叫顺序栈,链表实现的栈叫链式栈
- 顺序栈:
- 核心:按照栈的要求去往数组中存、取数据
- 创建一个数组
- 栈顶指针(top),实时指向栈顶元素
- 空栈:top = -1,表示空栈
- x 入栈:a[++top] = x
void push(int element){ //首先需要判断栈是否已满 if(top == size-1){ throw new StackOverflowError(); } else { a[++top] = element; } } - 出栈:top --
int pop(){ //首先需要判断栈是否为空栈 if(top == -1){ throw new EmptyStackException(); } return a[top--]; // 返回要删除的元素 }
- 类比汽车依次过隧道
- 队列只能再一端存数据,另一端取数据



