14_Python將列表做爲棧和隊列_Python編程之路

上一篇文章跟你們介紹了列表的一些方法,這一節咱們仍是講列表前端

只是這一節咱們要聯繫一些數據結構,來說列表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

相關文章
相關標籤/搜索