上一篇文章跟你們介紹了列表的一些方法,這一節咱們仍是講列表前端
只是這一節咱們要聯繫一些數據結構,來說列表python
首先咱們要理解一下棧是一種什麼數據結構後端
棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅容許在表的一端進行插入和刪除運算。這一端被稱爲棧頂,相對地,把另外一端稱爲棧底。向一個棧插入新元素又稱做進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成爲新的棧頂元素;從一個棧刪除元素又稱做出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成爲新的棧頂元素數據結構
經過下面一張圖理解一下棧是怎麼工做的app
簡單來說就是後進先出3d
下面咱們經過python列表的append()和pop()來簡單實現棧的功能blog
例如如下代碼隊列
In [1]: stack = [2, 3, 4, 5] In [2]: stack.append(6) In [3]: stack.append(7) In [4]: stack Out[4]: [2, 3, 4, 5, 6, 7] In [5]: stack.pop() Out[5]: 7 In [6]: stack Out[6]: [2, 3, 4, 5, 6] In [7]: stack.pop() Out[7]: 6 In [8]: stack.pop() Out[8]: 5 In [9]: stack Out[9]: [2, 3, 4]
總體就是這樣一個棧的結構,入棧與出棧,是按照後進先出的順序進行的博客
隊列也是一種特殊的線性表,特殊之處在於它只容許在表的前端(front)進行刪除操做,而在表的後端(rear)進行插入操做,和棧同樣,隊列是一種操做受限制的線性表。進行插入操做的端稱爲隊尾,進行刪除操做的端稱爲隊頭。io
簡單來講就是先進先出的一種數據結構
使用列表實現隊列的功能若是用collections包裏面的deque方法會更好
下面是隊列的代碼演示
In [1]: from collections import deque In [2]: queue = deque(["ayesup", "jack", "Tom"]) In [3]: queue.append("susmote") In [4]: queue.append("eric") In [5]: queue.popleft() Out[5]: 'ayesup' In [6]: queue.popleft() Out[6]: 'jack' In [7]: queue Out[7]: deque(['Tom', 'susmote', 'eric'])
開始先導包,而後使用deque生成一個隊列形式的列表,而後使用列表的方法簡單實現一個先入先出的功能
關於stack和隊列就講到這裏,後面可能還會有涉及這部分的知識
官方博客 www.susmote.com