關於隊列的那些事——

今天,我們拉回來講一講數據結構的隊列!

隊列

隊列是一個在一端進行插入,另一端進行刪除的線性表。
打個比方,排隊買東西,排在最前面的買完東西離開隊伍(刪除),最後將要進入排隊買東西的(插入)排在最後,最後買東西。
通常把隊列的刪除與插入分別稱之出隊和入隊。允許出隊的那頭稱之爲隊頭,允許入隊的稱爲隊尾。所有進隊的數據必須從隊尾進入,隊列中的數據只能從隊頭出隊。由於先進先出(先進去排隊的就先買東西),這種表就稱爲先進先出 (FIFO)
是不是蒙圈了?不過,我覺得還好。看圖:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述這就很清晰明瞭是不?

隊列算法

分爲入隊與出隊:

入隊
int dui[100000];
int head=0,tail=1;
void in(int x)
{
	tail++;
	if(tail==100000) cout<<"error";     //上溢
	dui[tail]=x;
}
出隊
int dui[100000];
int head=0,tail=1;
void in(int &x)
{
	x=dui[head];
	head++;
}

假溢出情況

基本在小數據量下不用考慮,但在數據量大時需要考慮:
在上溢情況下,head之前還有空的位置,就是假溢出。
這裏給出思路:
1.tail++;
2.如果tail=n+1,則tail=1;
3.如果(head=tail) //真溢出;
否則dui[tail]=x;


關於隊列的方法,結構特點都講完了,下次就是隊列的實地考察。
期待吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章