Free Will

数据结构与算法(2):栈与队列

一、栈

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个数据。

下图为出队列的示意图:
2019-05-17-165359.jpg

  • 出队列前:队首是10,队尾是30。
  • 出队列后:出队列(队首)之后。队首是20,队尾是30。

下图为入队列的示意图:
2019-05-17-165417-1.jpg

  • 入队列前:队首是20,队尾是30。
  • 入队列后:40入队列(队尾)之后。队首是20,队尾是40。


应统联盟


连接十万名应统专业同学


阿药算法


打通算法面试任督二脉