一、栈
1.1 栈的定义
栈(stack)是限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶(top),另一端称为栈底,不含任何数据元素的栈称为空栈。它有以下几个特点:
- 栈中的数据是按照“后进先出(LIFO,Last In First Out)”方式进出栈的。
- 向栈中添加、删除数据时,只能从栈顶进行操作
栈通常包括的三种操作:push、peek、pop
- push:向栈中添加元素
- peek:返回栈顶元素
- pop:返回并删除栈顶元素的操作。
1.2 进栈与出栈
下图为栈的示例图,栈中的数据依次为:$30=>20=>10$
下图为出栈的示意图:
- 出栈前:栈顶元素是30。此时,栈中的元素依次是$30 = > 20 => 10 $
- 出栈后:30出栈之后,栈顶元素变成20。此时,栈中的元素依次是 $20 => 10$
下图为入栈的示意图:
- 入栈前:栈顶元素是20。此时,栈中的元素依次是$20 => 10 $
- 入栈后:40入栈之后,栈顶元素变成40。此时,栈中的元素依次是 $40 => 20 => 10$
二、队列
2.1 队列的定义
队列(queue)是只允许在一段进行插入操作,而在另一端进行删除操作的线性表。允许插入的一段称为队尾,允许删除的一端称为队头。它有以下几个特点:
- 队列中数据是按照“先进先出(FIFO,First-In-First-Out)”方式进出队列的。
- 队列只允许在“队首”进行删除操作,而在“队尾”进行插入操作。
2.2 出队列和入队列
下图为队列的示意图:
队列中有10,20,30共3个数据。
下图为出队列的示意图:
- 出队列前:队首是10,队尾是30。
- 出队列后:出队列(队首)之后。队首是20,队尾是30。
下图为入队列的示意图:
- 入队列前:队首是20,队尾是30。
- 入队列后:40入队列(队尾)之后。队首是20,队尾是40。