1. 程式人生 > >資料結構之【佇列】

資料結構之【佇列】

佇列:先進先出,就是一塊線性表,必須從頭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;   例項化物件
	


}