vocus logo

方格子 vocus

7/150. 數組模擬隊列的思路分析 - 怎麼用數組來模擬排隊系統?

更新 發佈閱讀 5 分鐘

🏗️ 第 1 週:資料結構基礎(Data Structures) 7/150

07. 數組模擬隊列的思路分析 - 怎麼用數組來模擬排隊系統?

一、 核心變數:我們需要哪些裝備?

要用一個陣列來模擬排隊,我們不能只有一個陣列,還需要幾個「指揮官」來記錄隊伍的狀態。

1.      maxSize(最大容量):

o   這個陣列能裝多少人?這決定了隊列的上限。

2.      array(陣列本身):

o   用來存放數據的容器,例如

int[] arr = new int[maxSize]

3.      front(隊頭指標):

o   負責記錄「輪到誰出去了」。

o   初始值設定技巧: 通常設為 -1,指向隊列頭部的前一個位置(這樣數據處理起來會比較方便,稍後解釋)。

4.      rear(隊尾指標):

o   負責記錄「最後一個人排在哪」。

o   初始值設定技巧: 也設為 -1,指向隊列尾部的具體位置(即最後一個數據的索引)。


二、 動作分解:進場與出場

有了這兩個指標,我們就可以控制人流了。想像這兩個指標在陣列上賽跑:

1. 加入隊列 (AddQueue / Enqueue)

當有新數據要進來時,我們只看 rear(隊尾)

·        判斷滿了沒: 先檢查 rear 是否等於

maxSize - 1
。如果是,代表已經排到懸崖邊了,不能加了。

·        動作:

1.      rear 往後移一格 (rear++)。

2.      將數據填入新的 rear 位置 (arr[rear] = data)。

2. 取出數據 (GetQueue / Dequeue)

當要處理數據時,我們只看 front(隊頭)

·        判斷空了沒: 檢查 front 是否等於 rear。如果兩個指標重疊,代表隊尾已經追上隊頭(或者大家都還沒動),隊列是空的。

·        動作:

1.      front 往後移一格 (front++)。

2.      取出該位置的數據 (

return arr[front]
)。


三、 狀態模擬:腦海中的動畫

讓我們模擬一個大小為 3 的隊列:

1.      初始狀態: front = -1,

rear = -1
(空)。

2.      加入 A: rear 變 0,arr[0] = A

3.      加入 B: rear 變 1,arr[1] = B

4.      取出 A: front 變 0,回傳 arr[0]

o   注意:此時 A 其實還在陣列記憶體裡,只是我們的 front 指標移開了,邏輯上視為它已經離開。

5.      加入 C: rear 變 2,arr[2] = C

此時狀態:front = 0, rear = 2。隊列中有 B 和 C。


四、 致命缺陷:一次性使用的悲劇

仔細看上面的模擬,你會發現一個嚴重的問題。

假設我們的 maxSize 是 3。 當我們依序加入了 A, B, C,此時 rear = 2 (也就是

maxSize - 1
)。隊列滿了。

接著,我們把 A, B, C 全部取出處理掉。 此時 front 也變成了 2。

·        隊列空了嗎?是的 (front == rear)。

·        我們可以再加入新數據嗎?不行!

因為我們的判斷條件是 if (rear == maxSize - 1) 就算滿。雖然陣列的前面索引 0, 1, 2 的位置邏輯上都空出來了,但 rear 指標已經頂到天花板,回不去了。

這就是所謂的**「假溢出(False Overflow)」**——明明有空間,卻因為指標的單向移動而無法使用。這個陣列變成了一次性用品,這在電腦系統中是不可接受的浪費。


五、 總結

兩個指標定乾坤front 追著 rear 跑,中間的差距就是隊列中的數據。 • 初始化為 -1:這是一種方便的慣例,讓 front 指向「待處理數據的前一格」,rear 指向「最新數據的當下格」。 • 線性隊列的極限:這種簡單的實作方式會導致空間無法重複利用,這就是為什麼我們下一章必須引入「環形」的概念。

 

留言
avatar-img
강신호(姜信號 / Kang Signal)的沙龍
22會員
279內容數
「강신호(姜信號 / Kang Signal)」聚焦電信、網路與 AI 電子核心技術,解析 5G/6G、衛星通訊、訊號處理與產業趨勢,以工程視角輸出可落地的專業洞見,打造強信號的未來。
2026/01/26
佇列(Queue)遵循「先進先出」(FIFO)原則,是維護系統公平與秩序的核心結構。它透過「緩衝」機制調節處理速度差異,廣泛應用於印表機、CPU 排程及網路封包傳輸。在 AI 領域,佇列更是廣度優先搜尋(BFS)演算法與高併發訊息流處理的關鍵基石。
2026/01/26
佇列(Queue)遵循「先進先出」(FIFO)原則,是維護系統公平與秩序的核心結構。它透過「緩衝」機制調節處理速度差異,廣泛應用於印表機、CPU 排程及網路封包傳輸。在 AI 領域,佇列更是廣度優先搜尋(BFS)演算法與高併發訊息流處理的關鍵基石。
2026/01/26
Python 實作稀疏數組的壓縮與還原。核心採「兩次掃描法」,統計有效數據建立含檔頭的三欄結構,再依座標回填。此邏輯不僅解決存檔問題,更是 AI 領域利用 NumPy 處理大規模特徵矩陣,實現記憶體優化與運算加速的關鍵基石。
2026/01/26
Python 實作稀疏數組的壓縮與還原。核心採「兩次掃描法」,統計有效數據建立含檔頭的三欄結構,再依座標回填。此邏輯不僅解決存檔問題,更是 AI 領域利用 NumPy 處理大規模特徵矩陣,實現記憶體優化與運算加速的關鍵基石。
2026/01/26
轉換核心為捨棄零值,僅記錄有效數據的「列、行、值」。透過建立含原始維度的「檔頭」,將陣列壓縮為三欄結構;還原時依檔頭重建網格並回填,實現高效儲存與無損互換。
Thumbnail
2026/01/26
轉換核心為捨棄零值,僅記錄有效數據的「列、行、值」。透過建立含原始維度的「檔頭」,將陣列壓縮為三欄結構;還原時依檔頭重建網格並回填,實現高效儲存與無損互換。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
別讓你的房子,變成家中最大的「閒置資產」 作為一名服務高淨值客戶的私人銀行顧問,我每天的任務只有一個:幫客戶「讓錢滾動」。然而,當我觀察身旁許多同樣育有子女的朋友們,即便他們多半已是職場上的中高階主管,表面上看似光鮮亮麗,有房有車;但實際上,大家都是典型的「夾心世代」。每個月薪水一入帳,扣掉沉重的
Thumbnail
別讓你的房子,變成家中最大的「閒置資產」 作為一名服務高淨值客戶的私人銀行顧問,我每天的任務只有一個:幫客戶「讓錢滾動」。然而,當我觀察身旁許多同樣育有子女的朋友們,即便他們多半已是職場上的中高階主管,表面上看似光鮮亮麗,有房有車;但實際上,大家都是典型的「夾心世代」。每個月薪水一入帳,扣掉沉重的
Thumbnail
手機、平板、電子書、路由器維修 & 技能教學,請洽 LINE ID:CARTINGHAO   各位好,我是台灣黑手,黑手的黑,黑手的手,廢話說完了,這是一台 iPhone 7 目前是觸發漏電 150MA ,原本好像換過電池還是耗電,送修來就是拆機的,前面就不拍了   主機板卸下後
Thumbnail
手機、平板、電子書、路由器維修 & 技能教學,請洽 LINE ID:CARTINGHAO   各位好,我是台灣黑手,黑手的黑,黑手的手,廢話說完了,這是一台 iPhone 7 目前是觸發漏電 150MA ,原本好像換過電池還是耗電,送修來就是拆機的,前面就不拍了   主機板卸下後
Thumbnail
XFLTD养鸡场提供多种优质套餐,性价比极高,例如7元150g及77元的2年流量包以及10元120g可无限制使用的流量包。支持稳定的中转及专线服务,并解锁多款流媒体,带宽高达1Gbps,保护用户隐私。覆盖50多个节点,适合各种办公需求,是寻找高性价比机场套餐的理想选择。
Thumbnail
XFLTD养鸡场提供多种优质套餐,性价比极高,例如7元150g及77元的2年流量包以及10元120g可无限制使用的流量包。支持稳定的中转及专线服务,并解锁多款流媒体,带宽高达1Gbps,保护用户隐私。覆盖50多个节点,适合各种办公需求,是寻找高性价比机场套餐的理想选择。
Thumbnail
今天休假,早上要先去開個小刀,然後去上週約好的禮儀公司諮詢老爸的後事。
Thumbnail
今天休假,早上要先去開個小刀,然後去上週約好的禮儀公司諮詢老爸的後事。
Thumbnail
🐋除權息旺季正進行,本周有150檔個股即將除權息、11檔無償配股。其中京晨科(6419)殖利率超過11%,還有金融股富邦金(2881)、台中銀(2812);熱門股台汽電、環球晶、台亞等🉑 ​ 🐋除權息旺季正進行,本周有150檔個股即將除權息、11檔無償配股。其中京晨科(641
Thumbnail
🐋除權息旺季正進行,本周有150檔個股即將除權息、11檔無償配股。其中京晨科(6419)殖利率超過11%,還有金融股富邦金(2881)、台中銀(2812);熱門股台汽電、環球晶、台亞等🉑 ​ 🐋除權息旺季正進行,本周有150檔個股即將除權息、11檔無償配股。其中京晨科(641
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News