python堆栈实现

百度百科定义:
堆栈是一个在计算机科学中经常使用的抽象数据类型。堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(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.before is not None:
            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(11): #出栈
    print pop(demo1)

输出:
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
---------------
1
9
8
7
6
5
4
3
2
1
0
栈空了
[Finished in 0.5s]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值