佇列(迴圈佇列 鏈佇列)

2021-10-08 13:31:30 字數 2206 閱讀 4308

迴圈佇列:

// cirqueue.h

/*名稱:迴圈佇列 => 基於陣列

*/templateclass cirqueue // q_size + 1:多申請乙個位置,保證隊滿、對空容易判定!

~cirqueue(){}

void enter(datatype data); // 入隊操作

datatype shift(); // 出隊操作

datatype getfront(); // 獲得隊頭元素值

void show(); // 列印佇列元素

bool isempty() // 隊空

bool isfull() // 隊滿

int size() // 返回元素的個數。

};templatevoid cirqueue::enter(datatype data)

templatedatatype cirqueue::shift()

templatedatatype cirqueue::getfront()

templatevoid cirqueue::show()

}

鏈佇列:

// linkqueue.h

// 鏈佇列 => 基於鍊錶

templatestruct queuenode ;

templateclass linkqueue

int size();

};templatelinkqueue::linkqueue()

templatelinkqueue::~linkqueue()

}templatevoid linkqueue::enter(datatype data)

templatedatatype linkqueue::shift()

delete del_node;

return front_value;

}templatedatatype linkqueue::getfront()

templatevoid linkqueue::show() while (cursor != rear);

}templateint linkqueue::size() while (cursor != rear);

return count;

}

呼叫測試:

// queue.cpp

#include#include "cirqueue.h"

#include "linkqueue.h"

using namespace std;

int main() ) cir_queue.enter(da);

cout << "cir_queue:\n";

cir_queue.show();

cout << endl;

cout << "cir_queue size:" << cir_queue.size() << endl;

cout << "front param:" << cir_queue.shift()<< endl;

cout << "front param:" << cir_queue.getfront() << endl;

cout << "cir_queue size:" << cir_queue.size() << endl;

cout << "鏈佇列:\n";

linkqueuelink_queue;

for (int da = 1; da < 100; da++) link_queue.enter(da*da);

cout << "link_queue:\n";

link_queue.show();

cout << endl;

cout << "link_queue size:" << link_queue.size() << endl;

for (int i = 1; i < 10; i++) cout << "i=" << i << ", front param:" << link_queue.shift() << endl;

cout << "front param:" << link_queue.getfront() << endl;

cout << "link_queue size:" << link_queue.size() << endl;

}

佇列 迴圈佇列與鏈佇列比較

對於迴圈佇列與鏈佇列的比較,可以從兩方面來考慮 1 從時間上,其實它們的基本操作都是常數時間,即都為0 1 的,不過迴圈佇列是事先申請好空間,使用期間不釋放,而對於鏈佇列,每次申請和釋放結點也會存在一些時間開銷,如果入隊出隊頻繁,則兩者還是有細微差異。2 對於空間上來說,迴圈佇列必須有乙個固定的長度...

佇列(單鏈佇列和迴圈佇列)

和線性表類似,佇列也有兩種儲存表示 鏈佇列 為操作方便,給鏈佇列新增乙個頭結點 佇列的鏈式儲存結構 typedef struct qnodeqnode,queueptr typedef struct linkqueue 1 include2 include3 include4 typedef str...

09 迴圈佇列與鏈佇列

一 佇列與迴圈佇列 嵌入式 小j的天空 1.佇列 1 佇列 queue 是只允許在一端進行插入操作 而在另一端進行 刪除操作 的線性表。佇列是一種先進先出 fiirst in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作...