首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言入門

C 語言實現循環隊列:陣列模擬與首尾指針管理

     編輯:C 語言入門

資料結構定義

#define MAXSIZE 50
typedef int QueueElementType;

typedef struct {
    QueueElementType elem[MAXSIZE];
    int front;  // 指向隊頭元素
    int rear;   // 指向隊尾元素的下一個位置
} SeqQueue;

採用環狀陣列,犧牲一個儲存單元區分「空」與「滿」:

  • 空條件:front == rear
  • 滿條件:(rear + 1) % MAXSIZE == front

核心操作實現

初始化

void InitQueue(SeqQueue &Q) { Q.front = Q.rear = 0; }

入隊

bool EnterQueue(SeqQueue &Q, QueueElementType x) {
    if ((Q.rear + 1) % MAXSIZE == Q.front) return false; // 滿
    Q.elem[Q.rear] = x;
    Q.rear = (Q.rear + 1) % MAXSIZE;
    return true;
}

出隊

QueueElementType DeleteQueue(SeqQueue &Q) {
    if (Q.front == Q.rear) { /* 錯誤處理 */ return -1; }
    QueueElementType tmp = Q.elem[Q.front];
    Q.front = (Q.front + 1) % MAXSIZE;
    return tmp;
}

取隊尾元素、長度、判空/判滿、列印

所有操作均為 O(1) 時間複雜度,模數運算實現指釖環繞。

主程式測試流程

  1. 初始化隊列
  2. 批量輸入元素入隊
  3. 輸出隊尾元素
  4. 迴圈嘗試入隊直到滿
  5. 依序出隊並列印

完整程式碼包含選單驅動測試,編譯執行可驗證環狀邏輯正確性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved