c語言 佇列(queue)

2021-10-08 09:41:48 字數 1434 閱讀 6536

佇列基本操作

鍊錶是一種資料的儲存方式(相對應的是順序儲存結構),儲存的資料在記憶體中不連續的,用指針對資料進行訪問;

佇列是一種資料結構,其特點是先進先出,後進後出;

佇列的儲存方式可以使用線性表進行儲存,也可以使用鍊錶進行儲存

只能在隊首刪,在隊尾增加(而棧則相反,按照先進後出(filo)的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。)

1、隊頭不動,後續元素向前移一格--------操作量大但是空間利用率高

2、隊頭移動,隊頭指標後移-----操作簡單但是入隊可能假溢位

假溢位:順序佇列因多次入佇列/出佇列操作導致?尚有儲存空間但不能進行入佇列引起的溢位

真溢位:順序佇列的最大儲存空間已經存滿而又要求進行入佇列操作所引起的溢位。

迴圈佇列如何進行判空和滿操作:

少用乙個儲存單元

設定乙個標記flag;

初始值 flag = 0;入佇列:flag = 1; 出佇列:flag = 0;

隊列為空時:(front == rear && flag == 0)

隊列為滿時:(front == rear && flag == 1)

設定乙個計數器

所謂雙端佇列是指兩端都可以進行進隊和出隊操作的佇列,如下圖所示,將佇列的兩端分別稱為前端和後端,兩端都可以入隊和出隊。其元素的邏輯結構仍是線性結構

在雙端佇列進隊時:前端進的元素排列在佇列中後端進的元素的前面,後端進的元素排列在佇列中前端進的元素的後面。在雙端佇列出隊時,無論前端出還是後端出,先出的元素排列在後出的元素的前面。

輸出受限的雙端佇列,即乙個端點允許插入和刪除,另乙個端點只允許插入的雙端佇列。

輸入受限的雙端佇列,即乙個端點允許插入和刪除,另乙個端點只允許刪除的雙端佇列。

雙端佇列既可以用來佇列操作,也可以用來實現棧操作(只操作一端就是棧了)

C語言queue函式(佇列)

queue 模板類的定義在標頭檔案中。與stack 模板類很相似,queue 模板類也需要兩個模板引數,乙個是元素型別,乙個容器類 型,元素型別是必要的,容器型別是可選的,預設為deque 型別。定義queue 物件的示例 如下 queueq1 queueq2 queue 的基本操作有 入隊,如例 ...

C 優先佇列Queue

1.入隊,如例 q.push x 將x 接到佇列的末端。2.出隊,如例 q.pop 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。3.訪問隊首元素,如例 q.front 即最早被壓入佇列的元素。4.訪問隊尾元素,如例 q.back 即最後被壓入佇列的元素。5.判斷佇列空,如例 q.empty...

C 集合 佇列 Queue

什麼是佇列 它代表了乙個先進先出的物件集合。當您需要對各項進行先進先出的訪問時,則使用佇列。當您在列表中新增一項,稱為入隊,當您從列表中移除一項時,稱為出隊。queue類常用的屬性 屬性描述 count 獲取queue中包含的元素個數 queue類常用的方法 方法名描述public virtual ...