美文网首页
python数据结构-栈

python数据结构-栈

作者: 薛皓哲 | 来源:发表于2017-08-09 08:51 被阅读8次

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

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

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # Created by xuehz on 2017/8/8
    
    class 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 False
    
    
    class 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())
    
    

    相关文章

      网友评论

          本文标题:python数据结构-栈

          本文链接:https://www.haomeiwen.com/subject/yrlfrxtx.html