Python 栈和队列,双向队列

Posted on 2018-12-29 17:05  缥缈映苍穹  阅读(196)  评论(0)    收藏  举报
# 栈
# 特点: 先进后出
class StackFullException(Exception):
    pass
class StackEmptyException(Exception):
    pass
class Stack:
    def __init__(self,size):
        self.size = size
        self.lst = []
        self.top =0
    # 入栈
    def push(self,el):
        if self.top >= self.size:
            raise StackFullException("your stack is full!!!!!")
        self.lst.insert(self.top,el) # 放元素
        self.top += 1 # 栈顶指针向上移动一下
#
#     # 出栈
    def pop(self):
        if self.top == 0:
            raise StackEmptyException("your stack is empty!!!!!")
        self.top -=1
        el = self.lst[self.top]
        return el
#
s = Stack(6)
s.push("宝宝")
s.push("我还")
s.push("记得")
s.push("你")
s.push("刚刚")
s.push("说的话")
#
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())

import queue
q = queue.Queue()
q.put("李嘉诚1")
q.put("李嘉诚2")
q.put("李嘉诚3")
q.put("李嘉诚4")
q.put("李嘉诚5")
#
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())

from collections import  deque
d = deque() # 创建双向队列
d.append("宝宝") # 在右侧添加
d.append("no")
d.append("way")
d.append("哈哈")
d.appendleft("娃哈哈") # 在左边添加
d.appendleft("爽歪歪")
d.appendleft("优酸乳")
#
print(d.pop()) # 从右边拿数据
print(d.pop())
print(d.pop())
print(d.pop())
print(d.popleft()) # 从左边拿数据
print(d.popleft())
print(d.popleft())