数据结构----栈
栈的特点是后进先出。其常用操作包括:出栈,入栈等。在出栈前,需判断栈是否为空。在入栈时,需判断栈是否已满。
代码记录:
#coding=utf8
class stack():
def __init__(self,size):
self.stack = [] #定义栈体为一个空列表
self.size = size
self.top = 0 #栈顶为0,第一个元素放进去后,栈顶为1
def isEmpty(self):
if self.top == 0: #当栈顶为0时,代表栈为空
return True
else:
return False
def isFull(self):
if self.top == self.size: #当栈顶与栈体相同时,代表栈满
return True
else:
return False
def push(self,obj): #入栈
if self.isFull(): #当栈满时,弹出栈满提示
print "sorry,stack is full!"
else:
self.stack.append(obj) #当栈未满时,栈体添加内容,栈顶指针上移一个
self.top += 1
def out(self): #出栈
if self.isEmpty(): #当栈为空时,弹出为空提示
print "sorry,stack is empty!"
else:
self.top -= 1 #当栈有内容时,栈顶下移一个
self.stack.pop() #删除最后入栈内容
def show(self):
print self.stack
if __name__ == '__main__':
q = stack(3)
q.push('a')
q.show() #结果为['a']
print q.top #结果为1
q.push('b')
q.show() #结果为['a', 'b']
print q.top
q.push('c')
q.show() #结果为['a', 'b', 'c']
print q.top
q.push('d')
q.show() #结果为sorry,stack is full!
print q.top
q.push('e')
q.show() #结果为sorry,stack is full!
print q.top
q.out()
print q.top
q.push('f')
q.show() #结果为['a', 'b', 'f']
print q.top
q.out()
q.push('g')
q.show() #结果为['a', 'b', 'g']