[英]deque implementation options
我需要構建自己的雙端隊列,因為我在其中編程的環境沒有這種東西。 我發現自己在如何實現它的兩個選擇之間陷入了困境:
有任何想法嗎?
對於第一種選擇,您可以在分配數組時將每個數組的大小簡單地增加一倍,也許可以增加一個上限,該上限取決於您對應用程序或內存限制的了解。
您似乎已經想出了第二個。
為什么不只是一個簡單的雙向鏈表? 您需要快速隨機訪問嗎?
另一種方法可能是具有向量列表(固定大小)。 列表作為第一個DS的好處是您可以在頭和尾以及之間添加元素。 具有固定大小的向量的好處是您可以模擬二維數組,並且行的添加/刪除時間是恆定的。 現在假設您想添加一些內容。 您應該在列表的開頭(常量時間)添加一個節點,然后在固定大小的向量的最后添加條目。 因此,在出隊已經有了數據時,想想頭上的任何條目,您都將插入第一行的最后一列。 如果行中有可用空間,則任何在行首的進一步插入將發生在第一行的倒數第二行。 否則,請重復相同的步驟。 普通插入通常在列表向量的末尾發生,其中插入從向量的開始發生。
我將兩個選項組合在一起-多個較小的緩沖區,並且每個“端點”都指向另一個,本質上成為一個較大的圓形數組。 這樣,您幾乎不需要分配緩沖區。 至於輔助緩沖區的大小,我認為Collin的建議是一個不錯的選擇-隨手增加大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.