python学习记录-- 数据结构----栈

来源:互联网 发布:佳能打印机软件下载 编辑:程序博客网 时间:2024/06/04 18:07

 数据结构----栈

栈的特点是后进先出。其常用操作包括:出栈,入栈等。在出栈前,需判断栈是否为空。在入栈时,需判断栈是否已满。

代码记录:

#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']
    
    

0 0