順序佇列在使用過程中容易出現虛假的滿狀態, 為了解決這個問題,就產生了乙個較巧妙的方法,將順序佇列臆造為乙個環狀的空間,稱之為迴圈佇列。迴圈佇列中指標和佇列元素之間的關係不變,我們只需要利用模運算就可以很容易實現指標的迴圈移動。但是迴圈佇列中存在乙個問題,在迴圈佇列中只憑頭指標front等於尾指標rear無法判別佇列空間是「空」還是「滿」,可有兩種處理方法:其一是另設乙個標誌位以區別佇列是「空」還是「滿」;其二是少用乙個元素空間,約定以「佇列頭指標在佇列尾指標的下一位置(指環狀的下一位置)上」作為佇列呈「滿」狀態的標誌。此處使用方法二來解決這個問題。
結構圖
**描述
//資料型別
#define elemtype int
//佇列的最大空間
#define maxsize 8
//佇列的管理結構
typedef
struct queue
queue;
初始化
//佇列初始化
void
initqueue
(queue *q)
入隊
//入隊操作
void
enqueue
(queue *q, elemtype x)
出隊
//出隊操作
void
dequeue
(queue *q)
列印佇列資料
//列印迴圈佇列中的資料
void
showqueue
(queue *q)
printf
("\n");
}
獲取隊頭元素
//獲取隊頭元素
void
gethdad
(queue *q, elemtype *v)
求佇列長度
//獲取佇列長度(元素個數)
intlength
(queue *q)
清空佇列
//清空佇列
void
clearqueue
(queue *q)
銷毀佇列
//銷毀佇列
void
destroyqueue
(queue *q)
以下提供迴圈佇列的測試**seqqueue.h
#ifndef __seqqueue_h__
#define __seqqueue_h__
#include
#include
#include
//資料型別
#define elemtype int
//佇列的最大空間
#define maxsize 8
//佇列的管理結構
typedef
struct queue
queue;
void
initqueue
(queue *q)
;void
enqueue
(queue *q, elemtype x)
;void
showqueue
(queue *q)
;void
dequeue
(queue *q)
;void
gethdad
(queue *q, elemtype *v)
;int
length
(queue *q)
;void
clearqueue
(queue *q)
;void
destroyqueue
(queue *q)
;#endif
//__seqqueue_h__
seqqueue.cpp
#include
"seqqueue.h"
//佇列初始化
void
initqueue
(queue *q)
//入隊操作
void
enqueue
(queue *q, elemtype x)
//列印迴圈佇列中的資料
void
showqueue
(queue *q)
printf
("\n");
}//出隊操作
void
dequeue
(queue *q)
//獲取隊頭元素
void
gethdad
(queue *q, elemtype *v)
//獲取佇列長度(元素個數)
intlength
(queue *q)
//清空佇列
void
clearqueue
(queue *q)
//銷毀佇列
void
destroyqueue
(queue *q)
main.cpp
#include
"seqqueue.h"
void
main()
showqueue
(&q)
;dequeue
(&q)
;enqueue
(&q,10)
;dequeue
(&q)
;enqueue
(&q,20)
;showqueue
(&q)
;printf
("%d\n"
,length
(&q));
}
佇列之順序佇列詳解(C語言版)
首先我們來看看什麼是佇列?佇列是一種先進先出 fifo 的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。這和我們日常生活中的排隊是一致的,最早進入佇列的元素最早離開。佇列的結構圖如下所示 明白了佇列之後,順序佇列就非常簡單了,用順序儲存結構表示的佇列就簡稱為順序佇列。和順序棧相類似,在佇列...
迴圈佇列的實現(C語言版)
執行環境 vs2015 include include include 定義 typedef int elemtype typedef int status 定義常量的值 define ok 1 define error 0 define true 1 define false 0 define o...
迴圈佇列的儲存設計實現(C語言版)
1.概念 為充分利用向量空間,克服順序儲存結構的 假溢位 現象的方法是 將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列 circular queue 這種迴圈佇列可以以單鏈表的方式來在實際程式設計應用中來實現。迴圈佇列中,由於入隊時尾指標向前追趕頭指標 出隊...