佇列詳解 C

2021-09-25 22:19:30 字數 2345 閱讀 3039

1.定義佇列:queueq; 

2.佇列規則:fifo(first in first out)後進先出,限定只能在棧頂進行插入和刪除操作

3.佇列操作:push入隊,pop彈棧出隊,front取隊首元素(不是刪除),back取隊尾元素(不是刪除),size佇列元素個數,empty判空

用幾行**測試以下這幾個基本操作:

#include #include #include #include using namespace std;

int main()

while(!s.empty());

templateloopqueue::loopqueue(int c = 10)

:capacity(c), begin(0), end(0), queue(nullptr);

templateloopqueue::~loopqueue()

template bool loopqueue::isempty() //判斷迴圈佇列是否為空;

templateint loopqueue::size();

templatebool loopqueue::push(t t)

queue[end] = t;

end = (end + 1) % capacity;

return true;};

template bool loopqueue::pop() //判斷佇列是否為空

begin = (begin + 1) % capacity;

return true;};

template t loopqueue::front()

return queue[begin];};

int main()

getchar();

//system("pause");

return 0;

}

(2)基於鍊錶的佇列(鏈佇列)

鏈佇列是基於鍊錶實現的佇列,它不存在陣列的o(n)的元素移動問題或空間浪費問題。我們所要確定的就是鍊錶哪頭做隊首,哪頭做隊尾。顯然我們應該以鍊錶頭部為隊首,鍊錶尾部為隊尾。儲存乙個指向隊尾的指標,方便從鍊錶尾插入元素;使用帶頭節點的鍊錶,方便從煉表頭刪除元素。

基於鍊錶的佇列c++實現

#include #include using namespace std;

struct qnode //定義佇列結點的資料結構;

struct linkqueue //定義佇列的資料結構;

void initqueue(linkqueue &q) //構造乙個空的佇列

int isempty(linkqueue &q) //判斷佇列是否為空

void enqueue(linkqueue &q, double e) //從佇列尾部插入元素

void dequeue(linkqueue &q, double &e) //從佇列首部刪除乙個結點

void destoryqueue(linkqueue &q) //銷毀乙個佇列

}int main()

//輸出佇列元素,隊首->隊尾

qnode *p;

p = q->front->next;

if (p == null) //如果為空表,直接退出

cout << "佇列資料依次為:" << endl;

while (p != null)

cout << endl;

//刪除佇列元素

while (!isempty(*q))

//釋放記憶體空間

delete q->front;

delete q;

system("pause");

return 0;

}

6.總結

(1)迴圈佇列中判斷隊空的方法是判斷front==rear,隊滿的方法是判斷front=(rear+1)%maxsize。(為什麼不用乙個length表示隊長,當length==maxsize時表示隊滿,原因就是,在頻繁的佇列操作中,多出乙個變數會大量的增加執行時間,所以不如浪費乙個陣列空間來得划算。)

(2)用單鏈表表示的鏈式佇列特別適合於資料元素變動較大的情形,而且不存在溢位的情況。

接下來我們要介紹的就是queue的公升級版:優先佇列.

優先佇列詳解 C

1.概念 什麼是優先佇列呢?在優先佇列中,元素被賦予優先順序,當訪問元素時,具有最高端優先順序的元素先被訪問。即優先佇列具有最高端先出的行為特徵。它可以說是佇列和排序的完美結合體,不僅可以儲存資料,還可以將這些資料按照我們設定的規則進行排序。2.定義 優先佇列在標頭檔案 include 中 其宣告格...

C 佇列queue用法詳解

二 queue常用函式 queue是一種容器轉換器模板,呼叫 include queue 即可使用佇列類。queue 資料型別,容器型別 初始化時必須要有資料型別,容器可省略,省略時則預設為deque 型別 1 queue int q1 queue double q2 queue char q3 預...

佇列之順序佇列詳解(C語言版)

首先我們來看看什麼是佇列?佇列是一種先進先出 fifo 的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。這和我們日常生活中的排隊是一致的,最早進入佇列的元素最早離開。佇列的結構圖如下所示 明白了佇列之後,順序佇列就非常簡單了,用順序儲存結構表示的佇列就簡稱為順序佇列。和順序棧相類似,在佇列...