Python資料結構 堆疊

2021-07-29 16:13:59 字數 2248 閱讀 3711

堆疊(英語:stack),也可直接稱棧,在電腦科學中,是一種特殊的串列形式的資料結構,它的特殊之處在於只能允許在鍊錶或陣列的一端(稱為堆疊頂端指標,英語:top)進行加入資料(英語:push)和輸出資料(英語:pop)的運算。另外堆疊也可以用一維陣列或鍊錶的形式來完成。堆疊的另外乙個相對的操作方式稱為佇列。

由於堆疊資料結構只允許在一端進行操作,因而按照後進先出(lifo, last in first out)的原理運作。

從原理可知,對堆疊(棧)可以進行的操作有:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

class

my_stack

(object):

def

__init__

(self

,value):

self

.value

=value

# 前驅

self

.before

=none

# 後繼

self

.behind

=none

def

__str__

(self):

return

str(

self

.value)

def

top(

stack):

ifisinstance

(stack

,my_stack):

ifstack

.behind

isnot

none:

return

top(

stack

.behind)

else:

return

stack

def

push

(stack

,ele):

push_ele

=my_stack

(ele)

ifisinstance

(stack

,my_stack):

stack_top

=top

(stack)

push_ele

.before

=stack_top

push_ele

.before

.behind

=push_ele

else:

raise

exception

('不要亂扔東西進來好麼')

def

pop(

stack):

ifisinstance

(stack

,my_stack):

stack_top

=top

(stack)

ifstack_top

.before

isnot

none:

stack_top

.before

.behind

=none

stack_top

.behind

=none

return

stack_top

else:

print

('已經是棧頂了')

資料結構 堆疊

對於棧,想必大家都十分熟悉了,也能很快的答出棧是乙個先進後出的佇列。但是在平常程式設計的生活中應用的十分少。在acm中,棧是一種十分重要的資料結構 其他領域也一樣 我們可以用這種資料結構解決一些十分棘手的問題,大大提高了程式的效率。有這樣一道名為software bugs 的題。題目的意思簡要來說就...

資料結構 堆疊

引入 多項式計算問題 例如 62 3 42 62 6 2 3 33 3 3 0 042 4 2 8 僅計算最近的兩個數 08 0 8 8 結束 需要某種方式 順序儲存,倒序輸出 堆疊 堆疊 具有操作約束性的線性表 入棧void push stack s,elementtype x else 出棧 e...

資料結構 堆疊

可以認為具有一定約束的線性表,其插入和刪除都作用於棧頂 top 的端點位置。且最 棧的資料最先彈出。壓入棧 push 插入資料 彈出棧 pop 取出 刪除 資料 型別名稱 堆疊 stack 資料物件集 乙個有0個或多個元素的有窮線性表 操作集 對於乙個具體的長度為正整數的maxsize的堆疊s st...