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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构与算法--4.使用堆栈模拟队列

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法--4.使用堆栈模拟队列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題:

  • 隊列的插入和刪除遵循先入先出的原則,而堆棧遵循后進先出的原則。
  • 用兩個堆棧模擬隊列,要求實現(xiàn)時不能分配超過O(1)的內存,時間復雜度必須是o(m)。

思路:

  • 用兩個堆棧模擬隊列,必須要支持兩種操作,enqueue和dequeue,前者在隊列末尾加入一個元素,后者把隊列頭部的元素取出。
  • 步驟一:通過enqueue連續(xù)將“12345”插入隊列,這5個數(shù)在堆棧A中的排列是“12345”,即1在底部,5在頂部。
  • 步驟二:調用dequeue操作將1取出,即將A中元素依次彈出,壓入堆棧B,于是堆棧B隊列中為“54321”,也就是5在底部,1在頂部,于是直接把B的頂部元素彈出即可。
class StackQueue:def __init__(self):self.stackA = []self.stackB = []def enqueue(self,v):self.stackA.append(v)def dequeue(self):if len(self.stackB) == 0 :while len(self.stackA) > 0 :self.stackB.append(self.stackA.pop())return self.stackB.pop()sq = StackQueue()print("enqueue:") for i in range(6):sq.enqueue(i)print("{0}".format(i), end="")print("\ndequeue:") for i in range(6):print("{0}".format(sq.dequeue()), end="")

運行結果:

enqueue: 012345 dequeue: 012345

總結

以上是生活随笔為你收集整理的数据结构与算法--4.使用堆栈模拟队列的全部內容,希望文章能夠幫你解決所遇到的問題。

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