對佇列的簡單介紹

2021-10-05 17:41:05 字數 929 閱讀 3870

佇列的定義

佇列是只允許在一端進行插入操作,另一端進行刪除操作的線性表。

佇列是一種 「先進先出」 的線性表,簡稱fifo。允許插入的一端是隊尾,允許刪除的一端是隊頭。

1.迴圈佇列–順序儲存

底層還是用陣列來實現,但是需要兩個指標,乙個是隊頭指標,乙個是隊尾指標,當隊頭和隊尾指向同乙個位置時,表示當前的佇列是空佇列,如果有資料插入的話,可以直接向後移動隊尾指標,如果有資料要刪除的話,可以直接移動隊頭指標。在具體結構中還存放乙個size,表示當前佇列中的個數。下面說當隊頭指標和隊尾指標相遇時就是佇列是空,其實不嚴謹,只有當size為0的時候隊列為空,因為如果佇列滿了,隊頭和隊尾也會相遇,這兩種情況下隊頭指標和隊尾指標會指向同一塊位址。

如果隊尾指標移動超過n了怎麼辦,很簡單如果超過陣列範圍了,我們就指向開頭,如果開頭和頭指標相遇,size == n,說明空間不夠了,那麼我們就需要開闢乙個更大的空間,然後將資料重新拷貝到新空間中,釋放舊空間,再去移動隊尾指標。

順序儲存還是會出現空間不足,開闢新空間後,移動資料的過程,那麼我們來分析下鏈式儲存。

2.佇列的鏈式儲存

鏈式儲存,需要的話就去開闢新空間,不需要的話就釋放刪除的節點空間,按需索取,不用擔心陣列越界的問題,只有在我們申請不到新空間的時候才會插入失敗。

對閉包的簡單介紹

按照我的理解,閉包分為兩部分 函式 詞法作用域。什麼是詞法作用域呢?即以變數宣告定義的位置為參照,如果當前位置沒有定義,就會訪問父級定義的位置。閉包分為兩種,廣義上的閉包和狹義上的閉包,兩者上的區別,在我看來就是廣義上的閉包看著不像閉包,通常一般也不說它是閉包,但是實現上來說就是乙個閉包 而狹義上的...

佇列的介紹和簡單使用(二)

佇列,和棧 一樣,也是一種對資料的 存 和 取 有嚴格要求的線性儲存結構。與棧結構不同的是,佇列的兩端都 開口 要求資料只能從一端進,從另一端出 通常,稱進資料的一端為 隊尾 出資料的一端為 隊頭 資料元素進佇列的過程稱為 入隊 出佇列的過程稱為 出隊 不僅如此,佇列中資料的進出要遵循 先進先出 的...

對概念模型的簡單介紹

對概念模型的簡單介紹 1.1 資訊世界中的基本概念 1 實體 客觀存在並可相互區別的事物,例如 乙個職工 乙個學生 乙個部門等。2 屬性 實體所具有的的某一特性,乙個實體可以由若干個屬性來刻畫。例如 學生的實體可以由學號 姓名 性別 出生年月 所在院系 入學時間等屬性組成。屬性組合 20191512...