2.鏈隊
注意:佇列也是線性表,其特殊性在於有特殊的運算規則。即:隊結構只能在一端進行插入,該操作端稱為隊尾,另一端刪除元素,該操作端稱為隊頭。按照「先進先出」(first in first out,fifo)原則處理資料節點。
之所以用迴圈對列,就是了為了提高利用率。要不然每刪除乙個元素,對頭就空了乙個還用不了了。
實現迴圈,就用「模」運算:
隊空的條件:q.front == q.rear
堆滿條件:(q.rear+1)%max == q.front
typedef int elemtype;
typedef structsqqueue;
void sqqueueinit(sqqueue &q)
bool sqqueueempty(sqqueue q)
else return false;
}
bool sqqueuefull(sqqueue q)
else return false;
}
回到目錄
sqqueue sqqueuein(sqqueue q,elemtype x)sqqueue;
void sqqueueinit(sqqueue &q)
bool sqqueueempty(sqqueue q)
else return false;
}bool sqqueuefull(sqqueue q)
else return false;
}sqqueue sqqueuein(sqqueue q,elemtype x)
sqqueue s;
sqqueueinit(s);
cout<
回到目錄
typedef int datatype;
typedef struct qnode //定義節點
qnode,*queue;
typedef struct //定義乙個鏈隊
linkqueue;
void init(linkqueue &q)
bool sqqueueempty(sqqueue q)
else return false;
}
bool isempty(linkqueue q)
回到目錄
void enqueue(linkqueue &q,datatype a) //入隊
}
注意:當佇列中最後乙個元素被刪時,佇列尾指標也丟失了,因此需要對隊尾指標從新賦值。
void dequeue(linkqueue &q,datatype &a) //出隊
}
datatype getfront(linkqueue q)
}
int length(linkqueue q)
回到目錄
#includeusing namespace std;
typedef int datatype;
typedef struct qnode //定義節點
qnode,*queue;
typedef struct //定義乙個鏈隊
linkqueue;
void init(linkqueue &q); //初始化
bool isempty(linkqueue q); //判斷是否為空
void enqueue(linkqueue &q,datatype a); //入隊
void dequeue(linkqueue &q,datatype &a); //出棧
datatype getfront(linkqueue q); //訪問隊頭
int length(linkqueue q); //計算佇列長度(元素個數)
void init(linkqueue &q)
bool isempty(linkqueue q)
void enqueue(linkqueue &q,datatype a) //入隊
}void dequeue(linkqueue &q,datatype &a) //出隊
注意乙個小細節:在進行某些操作時,不管是棧還是佇列還是其他,需要注意函式是設為void型還是有返回型別。如果是void,要想要改變引數,需要用 * 或 ***&***,如果有返回就不需要了。
回到目錄
佇列 迴圈佇列與鏈佇列比較
對於迴圈佇列與鏈佇列的比較,可以從兩方面來考慮 1 從時間上,其實它們的基本操作都是常數時間,即都為0 1 的,不過迴圈佇列是事先申請好空間,使用期間不釋放,而對於鏈佇列,每次申請和釋放結點也會存在一些時間開銷,如果入隊出隊頻繁,則兩者還是有細微差異。2 對於空間上來說,迴圈佇列必須有乙個固定的長度...
09 迴圈佇列與鏈佇列
一 佇列與迴圈佇列 嵌入式 小j的天空 1.佇列 1 佇列 queue 是只允許在一端進行插入操作 而在另一端進行 刪除操作 的線性表。佇列是一種先進先出 fiirst in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作...
09 迴圈佇列與鏈佇列
一 佇列與迴圈佇列1.佇列 1 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 fiirst in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作,其實就是在隊尾追加乙個元...