日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编程题练习 两个栈实现队列

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程题练习 两个栈实现队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩個棧實現隊列

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

總結

以上是生活随笔為你收集整理的编程题练习 两个栈实现队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。