從無到有演算法養成篇 棧和佇列 佇列

2021-10-08 17:21:51 字數 708 閱讀 5778

佇列是啥?

資料從表的一端進,從另一端出,且遵循 "先進先出" 原則的線性儲存結構就是佇列。

佇列的兩個基本操作:入隊將乙個資料放到佇列尾部;出隊從佇列的頭部取出乙個元素。

佇列的應用:迴圈佇列、阻塞佇列、併發佇列、優先順序佇列等。

棧和佇列不要混淆,棧結構是一端封口,特點是"先進後出";而佇列的兩端全是開口,特點是"先進先出"。

佇列儲存結構的實現有以下兩種方式:

順序佇列:在順序表的基礎上實現的佇列結構;

鏈佇列:在鍊錶的基礎上實現的佇列結構;

兩者的區別僅是順序表和煉表的區別,即在實際的物理空間中,資料集中儲存的佇列是順序佇列,分散儲存的佇列是鏈佇列。

佇列的操作

入隊(尾部入隊)

①將值存入rear所代表的位置。

②rear = (rear+1)%陣列的長度。

出隊(頭部出隊)

front = (front+1)%陣列的長度。

佇列是否為空

front和rear的值相等,則該佇列就一定為空。

假溢位

隨著入隊、出隊的進行,會使整個佇列整體向後移動,就會出現上圖中的現象:隊尾指標已經移到了最後,即隊尾出現溢位,無法再進行入隊操作,然而實際上,此時佇列中還有空閒空間,

從無到有演算法養成篇 線性表實戰篇

例如 la lb lc 1 遞增有序鍊錶代表 插入適合後插,前插會倒序 2 表中不允許有重複的資料 合併各表前無重複資料,合併後也無重複資料,需要進行刪除操作 3 不另外佔 其他的儲存空間 無須建立新鍊錶。1 定義4個指標,pa 和 pb 分別是la,lb的工作指標,初始化分別為對應的首元節點,合併...

Makefile 從無到有

makefile這玩意在上學時就應該學,可是一直沉浸於ide的 所謂 死於安樂 直到現在一把年紀才開始接觸這種基礎東西。建立c程式 先寫個c程式,儲存在main.c裡 view plain file main.c include int main 看看我這時的目錄結構 view plain code...

Redis從無到有

redis最佳執行環境是linux作業系統,所以要在虛擬機器裡的linux系統裡安裝redis 安裝教程 安裝過程中遇到的問題 1 windosws系統預設是沒開啟虛擬機器功能的,進入bios設定,將相應的disable改為enable 2 license not accept 依次輸入 1,2,c...