C語言資料結構之FIFO

2021-10-05 03:34:37 字數 929 閱讀 6233

fifo(first in first out),插入在表的一端進行,而刪除在表的另一端進行,我們將這種資料結構稱為隊或者佇列(就像排隊一樣,排在前面的先出,很形象)

允許插入的一端稱為隊尾(rear),允許刪除的一端稱為(front)

通常我們用得較多的是迴圈佇列

也就是當rear達到fifo的最大值後又指向下標為0的位置。

這裡會存在乙個問題:正常是根據front==rear判斷是否為空,在這裡隊列為滿時,也是front==rear,那怎麼區分呢?

方法一:通過標誌位,當front==rear時,flag為1,佇列滿,否則為空

方法二:佇列滿的條件改為front == rear + 1,也就是佇列滿時,保留乙個元素空間

實際設計中通常會定義資料結構:

struct fifo_queue_tag

fifoqueuetype;

主要操作:

(1)佇列初始化:init_queue(q)

初始條件: 隊q 不存在。

操作結果: 構造了乙個空隊。

(2)入隊操作: in_queue(q,x),

初始條件: 隊q 存在。

操作結果: 對已存在的佇列q,插入乙個元素x 到隊尾,隊發生變化。

(3)出隊操作: out_queue(q,x)

初始條件: 隊q 存在且非空

操作結果: 刪除隊首元素,並返回其值,隊發生變化。

(4)判隊空操作:empty_queue(q)

初始條件: 隊q 存在

操作結果: 若q 為空隊則返回為1,否則返回為0。

資料結構 佇列(FIFO)

目錄 佇列介紹 陣列模擬佇列 思路 問題分析並優化 陣列模擬環形佇列 思路 有序列表,可以用陣列或鍊錶來實現 先入先出 fifo 定義乙個佇列 定義乙個佇列 public class arrayqueue 判斷佇列是否滿 public boolean iffull 判斷佇列是否為空 public b...

資料結構之 常用資料結構的建立(C語言)

define maxsize 20 儲存空間初始分配量 typedef int elemtype elemtype型別根據實際情況而定,這裡假設為int typedef struct sqlist 分號 不能忘記順序儲存結構需要三個屬性 1 儲存空間的起始位置 陣列data,它的儲存位置就是儲存空間...

資料結構 C語言 資料結構 查詢

二 查詢演算法的效能分析 三 基於線性表的查詢 四 基於樹的查詢 五 基於雜湊表的查詢 文章索引 分類typedef struct elemtype typedef struct sstable 從表中第一條 最後一條記錄開始,逐個進行記錄的關鍵字與給定值的比較,若某個記錄的關鍵字和給定值比較相等,...