python数据结构-栈

来源:互联网 发布:网络基础设施建设问题 编辑:程序博客网 时间:2024/06/06 04:34

想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。
从这堆书里面取一本书出来,取哪本书最方便?肯定是最上面那本。
栈这种数据结构的特点就是如此:后进先出(Last In First Out - LIFO),即最后被堆进去的数据,最先被拿出来。

想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。
从这堆书里面取一本书出来,取哪本书最方便?肯定是最上面那本。
栈这种数据结构的特点就是如此:后进先出(Last In First Out - LIFO),即最后被堆进去的数据,最先被拿出来。

#!/usr/bin/env python# -*- coding: utf-8 -*-# Created by xuehz on 2017/8/8class Stack():    def __init__(self, size):        self.stack = []        self.size = size        self.top = -1    def push(self, content):        if self.Full():            print 'Stack is Full'        else:            self.stack.append(content)            self.top = self.top+1    def out(self):        if self.Empty():            print 'Stack is Empty'        else:            self.stack.pop()            self.top = self.top-1    def Full(self):        if self.top == self.size:            return True        else:            return False    def Empty(self):        if self.top == -1:            return True        else:            return Falseclass Stack1:    """模拟栈"""    """    Stack() 建立一个空的栈对象    push() 把一个元素添加到栈的最顶层    pop() 删除栈最顶层的元素,并返回这个元素    peek()  返回最顶层的元素,并不删除它    isEmpty()  判断栈是否为空    size()  返回栈中元素的个数    Stack Operation      Stack Contents   Return Value     s.isEmpty()   []        True     s.push(4)   [4]     s.push('dog')   [4,'dog']     s.peek()   [4,'dog']    'dog'     s.push(True)   [4,'dog',True]     s.size()   [4,'dog',True]   3     s.isEmpty()   [4,'dog',True]   False     s.push(8.4)   [4,'dog',True,8.4]     s.pop()       [4,'dog',True]   8.4     s.pop()       [4,'dog']     True     s.size()   [4,'dog']     2    """    def __init__(self):        self.items = []    def isEmpty(self):        return len(self.items) == 0    def push(self, item):        self.items.append(item)    def pop(self):        return self.items.pop()    def peek(self):        if not self.isEmpty():            return self.items[len(self.items) - 1]    def size(self):        return len(self.items)if __name__ == '__main__':    s = Stack1()    print(s.isEmpty())    s.push(4)    s.push('dog')    print(s.peek())    s.push(True)    print(s.size())    print(s.isEmpty())    s.push(8.4)    print(s.pop())    print(s.pop())    print(s.size())