資料結構 棧 佇列 堆的python實現

2021-09-18 07:31:16 字數 2571 閱讀 6983

二、佇列的python實現

三、堆的python實現

棧、佇列、堆是基礎的資料結構型別,其中棧是後進先出的資料結構;佇列是先進先出的資料結構;堆通常可以被看成一棵樹,又可以被分為最小堆和最大堆,最小堆是指堆中某個節點的元素總不大於其父節點的值;最大堆是指堆中某個元素總不小於其父節點的值。

列表(list)是python中經常用到的基礎資料結構,我們可以使用列表來模擬棧,實現入棧,出棧等效果。

stack =

#入棧stack.(1

)print

(stack)

stack.(2

)print

(stack)

stack.(5

)print

(stack)

#檢視棧頂元素

top = stack[-1

]print

('棧頂元素為:'

,top)

#出棧stack.

pop(

)print

(stack)

#判斷棧是否為空

if stack:

print

('not empty'

)else

:print

('empty'

)

python的內建模組collections中包含了雙向佇列deque的資料結構型別,可以在佇列的左端和右端實現入隊和出隊,在雙向佇列的右端指向入隊和出隊動作就可以模擬入棧和出棧。

from collections import deque

stack =

deque()

#入棧stack.(1

)print

(stack)

stack.(2

)print

(stack)

#出棧a = stack.

pop(

)print

(stack)

print

(list

(stack)

)#判斷棧是否為空

iflist

(stack)

:print

('棧不為空!'

)else

:print

('棧為空!'

)

可以使用在列表尾部新增元素模擬入隊,列表頭部刪除元素模擬出隊。

queue =

#入隊queue.(1

)print

(queue)

queue.(2

)print

(queue)

queue.(5

)print

(queue)

#出隊queue.

pop(0)

print

(queue)

#判斷佇列是否為空

if queue:

print

('not empty'

)else

:print

('empty'

)

from collections import deque

queue =

deque()

#入隊queue.(1

)print

(queue)

queue.(1

)print

(queue)

queue.(7

)print

(queue)

#出隊queue.

popleft()

print

(queue)

#在某位置插入元素

queue.

insert(1

,3)print

(queue)

#判斷佇列是否為空

if queue:

print

('not empty'

)else

:print

('empty'

)

python中內建了實現堆的模組,可以直接呼叫。

import heapq

#列表h

h =[1,

4,5,

2,7]

#對h進行最小堆排序

heapq.

heapify

(h)print

(h)#刪除堆頂元素

a = heapq.

(h)print

('堆頂元素為:'

,a)print

('堆排序為:'

,h)#在堆中加入乙個元素val,並對堆重新排序

val =

3heapq.

(h,val)

print

('堆排序為:'

,h)#在堆中加入乙個元素,保持堆得元素數量不變,如果加入的元素大於堆頂元素則刪除堆頂元素。

val =

4heapq.

heapreplace

(h,val)

print

('堆排序為:'

,h)

Python資料結構 棧與佇列

佇列雙端佇列 棧 stack 也稱堆疊 是一種容器,可存入 訪問 刪除資料元素,它的特點在於只能允許在容器的一端 稱為棧頂端指標,英語 top 進行加入資料 英語 push 和輸出資料 英語 pop 的運算,保證在任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設的訪問順序。由於...

資料結構 棧 佇列

二 佇列 注 鏈式儲存 定義鍊錶元素所儲存的資料型別 以int為例 typedef int elemtype 定義棧的結點結構及結點指標型別 typedef struct stacknode stacknode,stacknodeptr 定義指向棧的結構 typedef struct linksta...

資料結構 堆(優先佇列)

一種樹形資料結構,分大根堆,小根堆。大根堆 max heap 滿足所有父節點不小於其任意子節點。小根堆 min heap 滿足所有父節點不大於其任意子節點。在這裡,我們只考慮二叉堆。二叉堆是一棵完全二叉樹。solution 可見,每堆果子分別被合併了n 1次,n 2次,n 3次 1次 則數量越小的堆...