佇列是一種先進先出的資料結構,元素只能新增到隊尾,而對元素的刪除,修改,檢索只能在隊頭進行。與棧的差異是很明顯的。同樣佇列的實現可以基於鍊錶,也可以基於陣列。和棧的基本操作差不多,但佇列多了乙個指標(標號)指向末尾的元素,因為需要在末尾插入元素。
#ifndef queue_h#define queue_h#include
template
class
queue
;private
:
intsizes;
node *head;
node *tail;
};template
queue::queue()
template
queue::~queue()
sizes=0;}
template
bool queue::enqueue(const t &element)
else
sizes++;
return
true;}
template
t queue::dequeue()
}template
t queue::peer()
template
int queue::getsize()
template
bool queue::isempty()
#endif
#include "當隊列為空的時候,頭尾指標指向null;插入第乙個元素的時候,要把head頭指標和尾指標指向它,之後就不斷移動尾指標就可以,出列的時候,要判斷陣列是否為空,為空就返回,在實現當中,是以頭指標是否為空來判斷的。 主函式queue.h
"using
namespace
std;
const
int size=10
;void
main()
}
#include "陣列實現時,採用的是迴圈陣列,head指向第乙個元素,而tail指向最後乙個元素的下乙個位置。所以乙個n長的陣列,最多只能儲存n-1個數,如果儲存n個數的話就無法判斷滿和空的狀態。array_queue.h
"using
namespace
std;
const
int size=4
;void
main()
}
用兩個棧實現佇列,是要實現佇列的enqueue,dequeue。首先是 enqueue,兩個棧都是空的,先入棧s1,要出佇列了怎麼辦,棧新增元素是不斷向上增長的,最先進的元素在最底下,而佇列要求最先進的先出,所以只能出棧元素,並放入另乙個棧s2中,這時順序又恢復了,底下的變成上面的了,出棧第乙個元素即可(或者在放入是不放入最後乙個,直接返回元素),第一次這樣,第二次呢?就直接從這個s2出棧。於是往乙個棧中入隊元素,另乙個出隊,直到為空後,在從入隊的那個棧中取元素。
#include "用兩個佇列來實現乙個棧,只要也是實現棧的push和pop操作,先push,不管怎樣,往乙個佇列裡面入隊元素,要出棧了怎麼辦,在佇列裡是不斷往隊尾加元素,出是從隊頭出,幸好這裡有兩個佇列,讓之前那個佇列的元素不斷出隊,到最後乙個元素時輸出,剛好實現了最後來的最先出。這樣入隊時總是往非空的佇列里入,輸出時,把非空的倒騰到空,輸出最後乙個。stack.h
"stack
s1;stack
s2;void enqueue(int
q)int
dequeue()
return
s1.pop();
}else
return
s2.pop();
}int
main()
}
#include "array_queue.h
"using
namespace
std;
const
int size=10
;queue
q1(size);
queue
q2(size);
void push(int
s)int
pop()
return
q2.dequeue();
}else
return
q1.dequeue();
}}void
main()
}
基本資料結構 佇列的實現及其運用
佇列是一種先進先出的資料結構,元素只能新增到隊尾,而對元素的刪除,修改,檢索只能在隊頭進行。與棧的差異是很明顯的。同樣佇列的實現可以基於鍊錶,也可以基於陣列。和棧的基本操作差不多,但佇列多了乙個指標 標號 指向末尾的元素,因為需要在末尾插入元素。ifndef queue h define queue...
基本資料結構 棧的實現及其運用
概述 資料結構是用來實現動態集合的方式。動態集合有兩個要素,一是動態集合中的元素,二是動態集合上的操作如search s,k 其中s為給定的集合,k為所要查詢的關鍵字。insert s,k delete,maximun,minimum,successor,predecessor等。這裡介紹幾種簡單的...
基本資料結構 佇列
佇列實現的是一種先進先出 first in,first out,fifio 的策略,佇列中的插入的操作稱為入隊 enqueue 佇列的刪除操作稱為出隊 dequeue 定義乙個陣列來實現佇列 public class queue public queue int n public boolean i...