迴圈佇列Queue 使用順序儲存結構(陣列)實現

2021-08-08 12:30:27 字數 1262 閱讀 6709

本人之前總是看,但是上手寫**少。就是那種眼高手低的(汗)。這段時間有空,就來補補吧,從基礎開始...

希望能夠堅持下去。

資料成員:

頭索引:front

尾索引:rear

判斷條件:

判斷佇列「空」: front == rear

判斷佇列「滿」:(rear + 1) % max_size == front, 頭和尾之間,保留乙個元素空間;

計算佇列長度:

(rear - front + max_size) % max_size

示例**:

#include

#include

#include

#define max_size (10)

#define ramdom(x) (rand() % 100)

typedef int qelement;

class sqqueue

~sqqueue() {}

void initqueue()

}int queuelength()

int inqueue(qelement e)

data[rear] = e;

rear = (rear + 1) % max_size;

return 0;

}int outqueue(qelement *e)

void printqueue()

} else

for (int i = 0; i < rear; ++i)

}printf("---------------\n");

}private:

qelement data[max_size];

int front;

int rear;

};int main()

q.printqueue();

//刪除2個元素

qelement e;

q.outqueue(&e);

q.outqueue(&e);

q.printqueue();

//再插入3個元素

for (int i = 0; i < 3; i++)

q.printqueue();

return 0;

}

佇列 順序儲存結構,迴圈佇列

為什麼小甲魚上節課說佇列的實現上我們更願意用鏈式儲存結構來儲存?我們先按照應有的思路來考慮下如何構造佇列的順序儲存結構,然後發掘都遇到了什麼麻煩。我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的儲存單元,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端則是隊頭。no pic...

佇列 迴圈佇列 的順序儲存實現

佇列的順序儲存實現 1 佇列 一端進,另一端出 佇列由兩個引數決定,front 頭 rear 尾 頭指標指向頭乙個元素,尾指標指向指向最後乙個元素的下一儲存單元 若陣列長度為n,當元素個數為n 1時就認為佇列已滿。r指向最後乙個空的元素空間。出隊 頭指標往上移動,入隊 尾指標向上移動,故 靜態佇列只...

迴圈佇列(即順序儲存的佇列,元素迴圈儲存)

在邏輯上把順序儲存的佇列想象成乙個環,就是迴圈佇列。迴圈佇列仍是順序儲存,只是元素可以迴圈儲存在給定的儲存空間。前篇文章,順序儲存佇列基本操作 所描述的佇列的儲存空間只可以使用一次,在一些元素出隊之後,空出來的空間沒有辦法再次儲存,造成浪費,所以更多選擇迴圈佇列。兩者的記憶體中的儲存一樣,只是邏輯上...