堆栈
什么是堆栈
堆栈(英语: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('已经是栈顶了')
|