基本資料結構 佇列的實現及其運用

2022-05-06 17:24:14 字數 3015 閱讀 1119

佇列是一種先進先出的資料結構,元素只能新增到隊尾,而對元素的刪除,修改,檢索只能在隊頭進行。與棧的差異是很明顯的。同樣佇列的實現可以基於鍊錶,也可以基於陣列。和棧的基本操作差不多,但佇列多了乙個指標(標號)指向末尾的元素,因為需要在末尾插入元素。

#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 "

queue.h

"using

namespace

std;

const

int size=10

;void

main()

}

當隊列為空的時候,頭尾指標指向null;插入第乙個元素的時候,要把head頭指標和尾指標指向它,之後就不斷移動尾指標就可以,出列的時候,要判斷陣列是否為空,為空就返回,在實現當中,是以頭指標是否為空來判斷的。

主函式

#include "

array_queue.h

"using

namespace

std;

const

int size=4

;void

main()

}

陣列實現時,採用的是迴圈陣列,head指向第乙個元素,而tail指向最後乙個元素的下乙個位置。所以乙個n長的陣列,最多只能儲存n-1個數,如果儲存n個數的話就無法判斷滿和空的狀態。

用兩個棧實現佇列,是要實現佇列的enqueue,dequeue。首先是 enqueue,兩個棧都是空的,先入棧s1,要出佇列了怎麼辦,棧新增元素是不斷向上增長的,最先進的元素在最底下,而佇列要求最先進的先出,所以只能出棧元素,並放入另乙個棧s2中,這時順序又恢復了,底下的變成上面的了,出棧第乙個元素即可(或者在放入是不放入最後乙個,直接返回元素),第一次這樣,第二次呢?就直接從這個s2出棧。於是往乙個棧中入隊元素,另乙個出隊,直到為空後,在從入隊的那個棧中取元素。

#include "

stack.h

"stack

s1;stack

s2;void enqueue(int

q)int

dequeue()

return

s1.pop();

}else

return

s2.pop();

}int

main()

}

用兩個佇列來實現乙個棧,只要也是實現棧的push和pop操作,先push,不管怎樣,往乙個佇列裡面入隊元素,要出棧了怎麼辦,在佇列裡是不斷往隊尾加元素,出是從隊頭出,幸好這裡有兩個佇列,讓之前那個佇列的元素不斷出隊,到最後乙個元素時輸出,剛好實現了最後來的最先出。這樣入隊時總是往非空的佇列里入,輸出時,把非空的倒騰到空,輸出最後乙個。

#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...