資料結構 python 棧

2021-10-19 17:38:10 字數 1989 閱讀 1884

1.棧(stack),有進有出,有順序結構和鍊錶結構。在操作上有進有出,形成了線性結構的關係。

(1)鍊錶結構,在記憶體上儲存的位置可以是一塊一塊的,通過指標的指向將他們連線在一起。可以靈活運用記憶體,但演算法較為複雜。

(2)順序結構,是用陣列來實現,比較簡單,但是陣列大小是事先規劃好的,大了浪費記憶體,小了不夠用。

2.棧的操作總是在棧頂進行(top),分別使用壓入(push)、彈出(pop)操作對資料進行寫入和讀取。

3.如果用排隊來比喻棧,鍊錶結構就是銀行的取號排隊,順序結構就是食堂打飯視窗排隊。隊尾就是棧頂,隊尾的那個人走了就是彈出,隊尾又來了乙個人就是壓入,那麼那個人就是新的棧頂。

4.實現

(1)用陣列實現:陣列實現棧

(2)用鍊錶實現:

import numpy as np

class

node()

:def

__init__

(self)

: self.data=

0#棧首

self.

next

=none

#指向top=

none

defis_empty()

:if top==

none

:return

true

else

:return

false

defpush

(data)

:global top

new_data=node(

) new_data.data=data

# print("t0",top)

new_data.

next

=top#將new_data指向上乙個元素,即上乙個棧首 將上乙個棧首的值賦給new_data.next

# print("t1",top)

top=new_data#將top更新為棧首

# print("t3",top)

# 給棧賦一些值用於測試

for i in

range(10

):# print(i)

# print()

push(np.random.randint(1,

10))def

show_element()

:global top

temp_list=

while top!=

none

: ptr = top

temp = ptr.data

top = top.

next

print

(temp_list)

temp_list.reverse(

)for data in temp_list:

push(data)

defpop()

:global top

if is_empty():

print

("空棧,彈出失敗"

)else

: ptr=top

temp=ptr.data

top=top.

next

print

(temp)

operate=

4while operate!=0:

print

("入棧操作請輸入1,出棧操作請輸入2,檢視當前棧的使用情況請輸入3,結束請輸入0"

) operate=

int(

input

("輸入:"))

if operate==1:

data=

int(

input

("輸入入棧的數值:"))

push(data)

elif operate==2:

pop(

)elif operate==3:

show_element(

)

Python資料結構 棧

棧在python中屬於擴充套件資料結構,棧屬於一端開口一端封閉的容器,只允許在一端插入和刪除的線性表 top 插入刪除端,棧頂 push 入棧 壓棧 資料a進入棧頂,當資料b入棧,就到了棧頂,a壓入到棧頂的下乙個位置。棧只能對棧頂的位置進行操作,等b出棧後,方可對a操作。pop 出棧 退棧 gett...

Python資料結構 棧

棧是一種呈線性排列的資料結構。特點是 先進後出 或 後進先出 last in first out,簡稱lifo 主要操作有兩種 入棧push 操作和出棧pop 操作,對應於增加和刪除操作,棧的增加和刪除資料只能在棧頂進行。程式 coding utf 8 created on fri jul 26 1...

資料結構 python 棧

所有動畫演示可以在visualgo這個 上找到。棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。棧允許進行插入和刪除操作的一端稱為棧頂 top 另一端為棧底 bottom 棧底固定,而棧頂浮動 棧中元素個數為零時稱為空棧。插入一般稱為進棧 push 刪...