堆疊(英語: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:
('已經是棧頂了')
資料結構 堆疊
對於棧,想必大家都十分熟悉了,也能很快的答出棧是乙個先進後出的佇列。但是在平常程式設計的生活中應用的十分少。在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...