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

2021-06-23 04:27:41 字數 2248 閱讀 5469

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

#ifndef queue_h

#define queue_h

#include template class queue

;private:

int sizes;

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()

;template queue::queue()

template queue::queue(int size)

template queue::~queue()

template bool queue::enqueue(const t &element)

else

}template t queue::dequeue()

else

return -1;

}template t queue::peer()

template bool queue::isempty()

template bool queue::isfull()

template int queue::getsize()

#endif

主函式

#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()

int pop()

return q2.dequeue();

}else

return q1.dequeue();

}}void main()

{ push(5);

push(9);

push(10);

push(6);

push(8);

int i=0;

while(i<6)

{std::cout<

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

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