順序隊列
(
隊列的順序存儲結構稱為順序隊列
(
①和順序表一樣
②由於隊列的隊頭和隊尾的位置是變化的
(
①入隊時
②出隊時
注意
①當頭尾指針相等時
②在非空隊列裡
順序隊列基本操作【參見動畫演示】
(
①
當隊列為空時
②
當隊列滿時
③
由於入隊和出隊操作中
【例】假設下述操作序列作用在初始為空的順序隊列上
EnQueue
盡管在任何時刻
為充分利用向量空間
(
循環隊列中進行出隊
① 方法一
if(i+
i=
else
i++;
② 方法二
i=(i+
(
循環隊列中
解決這個問題的方法至少有三種
① 另設一布爾變量以區別隊列的空和滿
② 少用一個元素的空間
③使用一個計數器記錄隊列中元素的總數(即隊列長度)
(
#define Queur Size
typedef char Queue DataType; //DataType的類型依賴於具體的應用
typedef Sturet{ //頭指針
int front; //尾指針
int rear; //計數器
DataType data[QueueSize]
}CirQueue;
(
用第三種方法
① 置隊空
void InitQueue(CirQueue *Q)
{
Q
Q
}
② 判隊空
int QueueEmpty(CirQueue *Q)
{
return Q
}
③ 判隊滿
int QueueFull(CirQueue *Q)
{
return Q
}
④ 入隊
void EnQueue(CirQueuq *Q
{
if(QueueFull((Q))
Error(
Q
Q
Q
⑤ 出隊
DataType DeQueue(CirQueue *Q)
{
DataType temp;
if(QueueEmpty((Q))
Error(
temp=Q
Q
Q
return temp;
}
⑥取隊頭元素
DataType QueueFront(CirQueue *Q)
{
if(QueueEmpty(Q))
Error(
return Q
&nbs
From:http://tw.wingwit.com/Article/program/sjjg/201311/22688.html