栈与队列

1、栈

  栈是一种数据呈线性排列的数据结构,在这种结构中,我们只能访问最新添加的数据。往栈中添加数据的时候,新数据被放在最上面。

往栈中添加数据的这个操作叫做“入栈”(push)。

 

 从栈中取数据的操作叫做“出栈”(pop)。

 

  栈这种最后添加的数据最先被取出,是“后进先出”的结构,称为Last In First Out,简称LIFO。与链表和数组一样,栈的数据也是线性排列,但是栈中,添加和删除数据的操作只能在一端进行,访问数据也只能访问到顶端的数据。如果想访问中间的数据时就得通过出栈操作将目标数据移到栈顶才行。

2、队列

  队列中的数据也是线性排列。队列与栈相比有些相似,但是队列中的添加和删除数据的操作分别是在两端进行的。在队列中,处理总是从第一名开始往后进行,而新来的人只能排队尾。

往队列中添加数据的时候,数据被放在最上面。往队列添加数据的这个操作称为“入队”。

 

往队列中删除数据的操作称为“出队”。从队列中取数据的时候,是从最下面开始取,最早入队的数据线开始进行删除。

 

  • 队列这种采用的是“先进先出”的结构,称为First In First Out,简称为FIFO。
  • 与栈类似,队列中可以操作的数据的位置有一定限制。在栈中,数据的添加和删除都在同一端进行,而在队列中则分别是在两端进行的。队列中不能直接访问中间的数据,必须通过出队操作将目标数据变成首位才能访问。
  • 先来的数据先服务是一种很常见的思路,所以队列的应用访问非常广。比如广度优先搜索算法,通过就会从搜索候补中选择最早的数据作为下一个顶点。
欢迎批评指正,提出问题,谢谢!
原文地址:https://www.cnblogs.com/xxeleanor/p/14471569.html