数据结构队列

这是我参与2022首次更文挑战的第37天,活动详情查看:2022首次更文挑战

数据结构队列

队列对于临时数据的处理也十分有趣,它跟栈一样都是有约束条件的数组。区别在于我们想要按什么顺序去处理数据,而这个顺序当然是要取决于具体的应用场景。

你可以将队列想象成是电影院排队。排在最前面的人会最先离队进入影院。套用到队列上,就是首先加入队列的,将会首先从队列移出。因此计算机科学家都用缩写“FIFO”(first in, first out)先进先出,来形容它。

与栈类似,队列也有3个限制(但内容不同)。

  • 只能在末尾插入数据(这跟栈一样)。
  • 只能读取开头的数据(这跟栈相反)。
  • 只能移除开头的数据(这也跟栈相反)。

下面来看看它是怎么运作的,先准备一个空队列。

首先,插入5(虽然栈的插入就叫压栈,但队列的插入却没有固定的叫法,一般可以叫放入、加入、入队)。

然后,插入9。

接着,插入100。

目前为止,队列表现得还跟栈一样,但要是移除数据的话,就会跟栈反着来了,因为队列是从开头移除数据的。

想移除数据,得先从5开始,因为开头就是它。

接着,移除9。

这样一来,队列就只剩下100了。

队列应用广泛,从打印机的作业设置,到网络应用程序的后台任务,都有队列的存在。

队列也是处理异步请求的理想工具——它能保证请求按接收的顺序来执行。此外,它也常用于模拟现实世界中需要有序处理事情的场景,例如飞机排队起飞、病人排队看医生。

总结

如你所见,栈和队列是能巧妙解决各种现实问题的编程工具。

掌握了栈和队列,就解锁出了下一个目标:学习基于栈的递归。递归也是其他高级算法的基础

おすすめ

転載: juejin.im/post/7068650577315495966