#define MAXSIZE 50
typedef int QueueElementType;
typedef struct {
QueueElementType elem[MAXSIZE];
int front; // 指向隊頭元素
int rear; // 指向隊尾元素的下一個位置
} SeqQueue;
採用環狀陣列,犧牲一個儲存單元區分「空」與「滿」:
front == rear(rear + 1) % MAXSIZE == frontvoid 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) 時間複雜度,模數運算實現指釖環繞。
完整程式碼包含選單驅動測試,編譯執行可驗證環狀邏輯正確性。