資料結構之【佇列】
阿新 • • 發佈:2019-01-29
佇列:先進先出,就是一塊線性表,必須從頭front的一方出隊,從尾巴rear一方入隊
我們生活中的佇列就是這樣的,出隊的時候每次必須從a1出隊,
當頭出隊後,尾巴就向前移動到下標為0處,這樣的效率太低了,我們應該提高效率,每次頭front出隊了,就不需要向前移動
隊頭不需要每次都向前移動
如果front==rear的時候隊為空,每次入隊一個尾巴就向後面移動
假設在進隊一個人尾巴就出去了,陣列出了問題我們的 0 和1 還沒有人,這樣叫假溢位
由於rear可能比front大,也可能比front小,所以列隊滿的條件就是:(rear+1)%Queuesize==front;
佇列長度的公式:(rear-front+Queuesize)%Queuesize
#include<iostream> using namespace std; #define MAXSIZE 10 class queue { public: queue(); bool IsFull(); bool IsEmpty(); bool Enqueue(int); bool Dequeue(int&); private: int front; int rear; int buf[MAXSIZE]; }; queue:queue() 建構函式 { this->rear=0; this->front=0; } bool queue:: IsFull() { if((this->rear+1)%MAXSIZE==front) return true; else return false; } bool queue::IsEmpty() { if(this->rear==this->front) return true; else return false; } bool queue::Enqueue(int d) { if(IsFull()) return false; this->buf[this->rear]=d; this->rear=(this->rear+1)%MAXSIZE; } bool queue::Dequeue(int& d) { if(IsEmpty()) reutrn false; d=buf[this->front]; this->front=(this->front++)%MAXSIZE; 出佇列 的頭移動 } int main() { queue q; 例項化物件 }