堆栈
什么是堆栈
堆栈(英语:stack),也可直接称栈,在计算机科学中,是一种特殊的串列形式的数据结构,它的特殊之处在于只能允许在链接串列或阵列的一端(称为堆叠顶端指标,英语:top)进行加入资料(英语:push)和输出资料(英语:pop)的运算。另外堆叠也可以用一维阵列或连结串列的形式来完成。堆叠的另外一个相对的操作方式称为伫列。
由于堆叠数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。
特点
- 先入后出,后入先出。
- 除头尾节点之外,每个元素有一个前驱,一个后继。
操作
从原理可知,对堆栈(栈)可以进行的操作有:
- top():获取堆栈顶端对象
- push():向栈里添加一个对象
- pop():从栈里推出一个对象
实现
1
2
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
)
:
if
isinstance
(
stack
,
my_stack
)
:
if
stack
.
behind
is
not
None
:
return
top
(
stack
.
behind
)
else
:
return
stack
def
push
(
stack
,
ele
)
:
push_ele
=
my_stack
(
ele
)
if
isinstance
(
stack
,
my_stack
)
:
stack_top
=
top
(
stack
)
push_ele
.
before
=
stack_top
push_ele
.
before
.
behind
=
push_ele
else
:
raise
Exception
(
'不要乱扔东西进来好么'
)
def
pop
(
stack
)
:
if
isinstance
(
stack
,
my_stack
)
:
stack_top
=
top
(
stack
)
if
stack_top
.
before
is
not
None
:
stack_top
.
before
.
behind
=
None
stack_top
.
behind
=
None
return
stack_top
else
:
print
(
'已经是栈顶了'
)
|