Python的栈

Python的栈

堆栈-先进后出,后进先出

# -*- coding:utf-8 -*-
'''
定义一个堆栈
'''
import sys
class Stack(object):
    def __init__(self,size):    #初始化栈的大小、栈顶
        self.stack = [] #定义一个空的列表作为栈
        self.size = size    #初始化栈的大小
        self.top = len(self.stack)   #初始化栈顶的值为栈的长度:对于一个空栈而言,栈顶的值等于栈的长度值

    #判断栈满
    def full(self):
        if self.size == self.top:
            print "Stack is full.Forbidden to push any item into it."
            return True
        else:
            return False

    #判断栈空
    def empty(self):
        if self.top == 0:
            print "Stack if empty."
            return True

    #入栈操作
    def push(self,content):
        if self.full():
            print "Stack if full."
        else:
            self.top += 1
            self.stack.append(content)


    #出栈操作
    def out(self):
        if self.empty():
            raise ValueError("Stack is empty.")
        else:
            self.stack.pop()    #删除栈顶元素
            self.top -= 1

    def display(self):
        print "SizeOfStack = ",len(self.stack)
        print "Stack = ",self.stack
        print "Top Value = ",self.top,"\n"

#测试
s = Stack(20)
s.push("Hello")
s.display()
s.push("Python")
s.display()
for i in "Python":
    print "Stack Full? ",s.full()
    s.push(i)
    s.display()
s.display()

s.out()
s.display()
s.out()
s.display()
for i in range(12):
    print "Stack Empty? ",s.empty()
    s.out()
    s.display()
s.display()
运行结果:
SizeOfStack =  1
Stack =  ['Hello']
Top Value =  1 

SizeOfStack =  2
Stack =  ['Hello', 'Python']
Top Value =  2 

Stack Full?  False
SizeOfStack =  3
Stack =  ['Hello', 'Python', 'P']
Top Value =  3 

Stack Full?  False
SizeOfStack =  4
Stack =  ['Hello', 'Python', 'P', 'y']
Top Value =  4 

Stack Full?  False
SizeOfStack =  5
Stack =  ['Hello', 'Python', 'P', 'y', 't']
Top Value =  5 

Stack Full?  False
SizeOfStack =  6
Stack =  ['Hello', 'Python', 'P', 'y', 't', 'h']
Top Value =  6 

Stack Full?  False
SizeOfStack =  7
Stack =  ['Hello', 'Python', 'P', 'y', 't', 'h', 'o']
Top Value =  7 

Stack Full?  False
SizeOfStack =  8
Stack =  ['Hello', 'Python', 'P', 'y', 't', 'h', 'o', 'n']
Top Value =  8 

SizeOfStack =  8
Stack =  ['Hello', 'Python', 'P', 'y', 't', 'h', 'o', 'n']
Top Value =  8 

SizeOfStack =  7
Stack =  ['Hello', 'Python', 'P', 'y', 't', 'h', 'o']
Top Value =  7 

SizeOfStack =  6
Stack =  ['Hello', 'Python', 'P', 'y', 't', 'h']
Top Value =  6 

Stack Empty?  None
SizeOfStack =  5
Stack =  ['Hello', 'Python', 'P', 'y', 't']
Top Value =  5 

Stack Empty?  None
SizeOfStack =  4
Stack =  ['Hello', 'Python', 'P', 'y']
Top Value =  4 

Stack Empty?  None
SizeOfStack =  3
Stack =  ['Hello', 'Python', 'P']
Top Value =  3 

Stack Empty?  None
SizeOfStack =  2
Stack =  ['Hello', 'Python']
Top Value =  2 

Stack Empty?  None
SizeOfStack =  1
Stack =  ['Hello']
Top Value =  1 

Stack Empty?  None
SizeOfStack =  0
Stack =  []
Top Value =  0 

Stack Empty?  Stack if empty.
True
Stack if empty.
Stack is empty.
SizeOfStack =  0
Stack =  []
Top Value =  0 

Stack Empty?  Stack if empty.
True
Stack if empty.
Stack is empty.
SizeOfStack =  0
Stack =  []
Top Value =  0 

Stack Empty?  Stack if empty.
True
Stack if empty.
Stack is empty.
SizeOfStack =  0
Stack =  []
Top Value =  0 

Stack Empty?  Stack if empty.
True
Stack if empty.
Stack is empty.
SizeOfStack =  0
Stack =  []
Top Value =  0 

Stack Empty?  Stack if empty.
True
Stack if empty.
Stack is empty.
SizeOfStack =  0
Stack =  []
Top Value =  0 

Stack Empty?  Stack if empty.
True
Stack if empty.
Stack is empty.
SizeOfStack =  0
Stack =  []
Top Value =  0 

SizeOfStack =  0
Stack =  []
Top Value =  0 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值