栈(stacks)是一种只能通过访问其栈尾来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征。
下面是python实现栈的代码:
#!/usr/bin/python
#coding=utf-8
class Stack(object) :
def __init__(self,size):
#类的构造函数
self.size = size
self.stack = []
def __str__(self):
#类的字符串输出方法,类似于java的.toString()方法
return str(self.stack)
def getSize(self) :
#获取栈当前大小
return len(self.stack)
def push(self, x) :
#入栈,栈满抛异常
if self.isfull() :
#return -1
raise Exception("Stack is full")
self.stack.append(x)
def pop(self) :
#出栈,栈空抛异常
if self.isempty() :
#return -1
raise Exception("Stack is empty")
topElement = self.stack[-1]
self.stack.remove(topElement)
return topElement
def isempty(self) :
#判断栈空
if len(self.stack) == 0 :
return True
return False
def isfull(self) :
#判断栈满
if len(self.stack) == self.size :
return True
return False
下面是模块内的测试代码:
if __name__ == '__main__' :
stackTest = Stack(10)
for i in range(10) :
stackTest.push(i)
print stackTest.getSize()
print stackTest.isempty()
print stackTest.isfull()
print stackTest
for i in range(6) :
stackTest.pop()
print stackTest.getSize()
print stackTest
测试结果: