迴圈佇列:
// 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。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作...