資料結構 迴圈佇列的學習

2021-07-10 07:06:19 字數 870 閱讀 4935

迴圈佇列需要隊首和隊尾兩個標誌位 其中 front 標誌位 位於 隊頭前乙個位置 rear 指向最後乙個元素位置  

當 front == rear 此時佇列空 

當 (rear+1)%maxsize = front 時此時佇列滿 這是犧牲了乙個單元空間的效果 避免假溢位  

#include

using namespace std;

const int maxsize = 100;

template

class cirqueue

//構建空佇列

~cirqueue();

void enqueue(datatype x);//進佇列

datatype dequeue();//取隊頭元素

datatype getqueue();//取隊頭元素但是不刪除

int empty()

private:

int front,rear;

datatype data[maxsize];

};templatevoid cirqueue::enqueue(datatype x)

//佇列是隊尾進

rear = (rear+1)%maxsize;//尾指標加1取模

data[rear] = x;//將元素插入隊尾

}templatedatatype cirqueue::dequeue()

front = (front+1)%maxsize;

return data[front];

}templatedatatype cirqueue::getqueue()

int i = (front+1)%maxsize;

return data[i];

}

資料結構 佇列 迴圈佇列

在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...

資料結構 佇列 迴圈佇列

資料結構 佇列 迴圈佇列 順序儲存 犧牲乙個空間單元來判段佇列滿狀態。q.front q.rear 1 initsize date 2017 4 16 include define elemtype char define initsize 100 typedef structsqqueue voi...

資料結構 迴圈佇列

所謂順序儲存結構就是用一組位址連續的儲存單元依次存放從隊頭到隊尾的元素。宣告兩個指標rear front分別用來指示隊尾元素的下一位置和隊頭元素的位置。初始化時rear front 0 插入新的元素時尾指標加1,元素出佇列時隊頭指標加1。不過這樣做有個問題,不論是入隊還是出隊,隊頭或隊尾指標都是加1...