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