python堆栈实现

来源:互联网 时间:2017-08-29


百度百科定义:
堆栈是一个在计算机科学中经常使用的抽象数据类型。堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。 PUSH操作在堆栈的顶部加入一 个元素。POP操作相反, 在堆栈顶部移去一个元素, 并将堆栈的大小减一。
我的实现代码如下:


#-*- coding:utf-8 -*-
__metaclass__ = type
class mystack():
def __init__(self,value):
self.value = value
self.behind = None
self.before = None
def __str__(self):
return str(self.value)
def top(stack):#顶部
if isinstance(stack,mystack):
if stack.behind is not None:
return top(stack.behind)
else:
return stack
else:
print ('没有初始化')
def push(stack,elem):#入栈
in_elem = mystack(elem)
if isinstance(stack,mystack):
now_top = top(stack)
in_elem.before = now_top
in_elem.before.behind = in_elem
print ('成功入栈')
else:
print ('没有初始化')
def pop(stack): #出栈
if isinstance(stack,mystack):
now_top = top(stack)
if now_top is not -1:
now_top.before.behind = None
now_top.before = None
return now_top
else:
return('栈空了')
else:
return('没有初始化')
demo1 = mystack(1)#初始化,只能通过demo1访问
for i in range(10): #入栈
push(demo1,i)
print '---------------'
print demo1
for p in range(10): #出栈,如果改成range(11)就会报错
print pop(demo1)
print demo1
输出:
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
---------------
1
9
8
7
6
5
4
3
2
1
0
1
[Finished in 0.3s]


相关阅读:
Top