编程题练习 两个栈实现队列
生活随笔
收集整理的這篇文章主要介紹了
编程题练习 两个栈实现队列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
兩個棧實現隊列
1.判斷隊列為空: 當棧s1 和 s2都為空時,那么隊列為空
2.入隊操作: 直接將數據加入到s1棧中
3.出隊操作:當 s2 棧不為空的時候, s2 棧直接執行出棧操作就可以得到出隊的數據;
如果 s2 棧為空的話,則 s2 入棧 s1 出棧的數據,直到 s2 棧為空。
4.查看隊列首數據:和出隊操作一樣
?
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 5 class Queue(object): 6 def __init__(self): 7 self.s1 = Stack() 8 self.s2 = Stack() 9 10 def is_empty(self): 11 result = self.s1.is_empty() and self.s2.is_empty() 12 return result 13 14 def enqueue(self, elem): 15 self.s1.push(elem) 16 17 def dequeue(self): 18 while self.s2.is_empty(): 19 while not self.s1.is_empty(): 20 self.s2.push(self.s1.pop()) 21 return self.s2.pop() 22 23 def peek(self): 24 while self.s2.is_empty(): 25 while not self.s1.is_empty(): 26 self.s2.push(self.s1.pop()) 27 return self.s2.peek() 28 29 class Stack(object): 30 def __init__(self): 31 self._elems = [] 32 33 def is_empty(self): 34 return self._elems == [] 35 36 def push(self, elem): 37 self._elems.append(elem) 38 39 def pop(self): 40 return self._elems.pop() 41 42 def peek(self): 43 return self._elems[-1] 44 45 def bianli(self): 46 return self._elems 47 48 if __name__ == "__main__": 49 s = Stack() 50 for i in range(5): 51 s.push(i) 52 print(s.pop()) 53 print(s.pop()) 54 print(s.bianli()) 55 q = Queue() 56 for i in range(5): 57 q.enqueue(i) 58 print("enqueue 0 1 2 3 4 ") 59 print("dequeue:",q.dequeue()) 60 print("dequeu:",q.dequeue())?
轉載于:https://www.cnblogs.com/xautxuqiang/p/6428761.html
總結
以上是生活随笔為你收集整理的编程题练习 两个栈实现队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj1003题解
- 下一篇: android jni与java之间数据