對於迴圈佇列,試寫出求佇列長度的演算法

2025-03-10 08:15:22 字數 4204 閱讀 9249

1樓:網友

include

using namespace std;

#define max_qsize 5

typedef int elemtype;

typedef struct sqqueue //迴圈佇列。

結構體定義。

elemtype *base;

int front;

int rear;};

void initqueue(sqqueue *&q)

q=(sqqueue *)malloc(max_qsize*sizeof(sqqueue));

q->rear=q->front;

int emptyqueue(sqqueue *q)

if(q->rear==q->front)

return 0;

else return 1;

void destroyqueue(sqqueue *q)

if(q->base) free(q->base);

q->base=null;

q->front=q->rear;

void clearqueue(sqqueue *q)

q->rear=q->front;

int lenghtqueue(sqqueue *q) /求隊灶備毀列長度函式。

return (q->front-q->rear+max_qsize)%max_qsize;

入隊操作。if((q->滾野rear+1)%max_qsize==q->front)

return 0;

else q->base[q->rear]=e;

q->rear=(q->rear+1)%max_qsize;

return 1;

出隊操作。if(q->rear==q->front)

return 0;

else e=q->base[q->front];

cout《隱備front=(q->front+1)%max_qsize;

return 1;

int main()

sqqueue *q; initqueue(q);

int a[9]=;

for(int i=0;i<9;i++)

enqueue(q,a[i]);

coutdequeue(q,a[i]);

2樓:匿名使用者

int queuelen(sqqueue q)if(>

return ;

else return max_qsize-(;/maxsize是迴圈佇列指或的初始唯仔伍分配的最戚桐大空間。

對於迴圈佇列,試寫出求佇列含有多少個元素的演算法,並將演算法用c**實現。

3樓:惠企百科

對於迴圈佇列。

求佇列含有多少個元素的演算法手團如下:

typedef struct

int tail,head;

int a[max];

queue;

void enqueue(int key,queue&q);

int dequeue(queue&q)

int key;

key=;return key;

擴充套件資畢梁橘料:計算迴圈佇列的元素個數:(尾-頭+表長)%表長。

佇列頭指標為來front,佇列尾指標為rear,佇列容量為m,則元素個數為|rear-front+m|%m,注意,這個自%是求餘運算。

設f為隊頭,r為隊尾,m為隊渣搜長,a為元素個數,則1. f>r時,a=m+r-f; 2. f<=r時,a=r-f

對於迴圈佇列()。

4樓:閒風自適

對於迴圈旦旦佇列()。

a.無法判斷佇列是否譁遲畝為空。

b.無法判斷佇列是否為滿。

c.佇列不可能滿。

d.以上說法都不是。

正確答案:以上說法都不亂森是。

迴圈佇列儲存在陣列a[0..m]中,則入隊時的操作為( )。

5樓:信必鑫服務平臺

入隊操作為:rear=(rear+1)%(m+1)。

迴圈佇列的重要操作:

1、初始化:燃歲(maxsize為最大佇列長度)q.base=(qelemtype*)malloc(maxsize*sizeof(qelemtype));

q.front=q.rear=0;

2、返回q中元素的個數。

return(;

3、插入元素(隊尾插入)

if(( error;∥隊滿判斷。

∥修改的方法。

總是指向下乙個可皮冊睜以插入新元素的位置。

4、刪除元素(從隊首刪除)

if( error;∥隊空的判斷。

e= [;此題可知,maxsize=m+1。

設迴圈佇列的容量為40(序號從0到39),現經過一系列的入隊和出對運算後

6樓:匿名使用者

此處可直接使用佇列長度計算公式: (n+r-f)% n,其中n為佇列容量40,r,f分別為尾指標、頭指標所指向元素,則可以得出:

1)l=(40+19-11)% 40=8

2)l=(40+11-19)% 40=32

已知迴圈佇列front和rear的值求佇列長度。

7樓:網友

fornt 是9,則隊頭是10,rear 是4,陣列中a[10]-a[19],a[0]-a[4]儲存了佇列元素,佇列長度為10+5=15

當利用大小為m的陣列迴圈儲存乙個佇列時,該佇列的最大長度是()。

8樓:奇奇侃科技

當李瞎利用大小為m的陣列迴圈儲存乙個佇列時,該隊山擾手列的最大長逗嫌度是()。

正確答案:b

對於迴圈佇列,再做入隊運算樹時應先判斷

9樓:

摘要。假設迴圈佇列的初始狀態為空,即:s=0,且front=rear=m。

入隊運算。入隊運算是指在迴圈佇列的隊尾加入乙個新元素。操作過程如下:

a.首先判斷迴圈佇列是否滿。當迴圈佇列非空(s=1)且隊尾指標等於排頭指標時,說明迴圈佇列己滿,不能進行入隊運算。這種情況稱為「上溢」。此時演算法結束。

b.然後將隊尾指標進一(即:rear= rear+ 1),並當rear=m+1時置rear= 1。

c.最後將新元素x插入隊尾指標指向的位置,並且置迴圈佇列非空標誌。

退隊運算。退隊運算是指在迴圈佇列的排頭位置退出乙個元素並賦給指定的變數。操作過程如下:

a.首先判斷迴圈佇列是否為空。當迴圈佇列為空(s=0)時,不能進行退隊運算。這種情況稱為「下溢」。

此時演算法結束。

b.然後將排頭指標進一(即front= front+ 1),並當front=m+ 1時置front= 1。

c.再將排頭指標指向的元素賦給指定的變數。

d.最後判斷退隊後迴圈佇列是否為空。當front=rear時置迴圈佇列空標誌(即s=0)。

對於迴圈佇列,再做入隊運算樹時應先判斷。

假設迴圈佇列皮彎的初始狀態為空,即:s=0,且front=燃頌悶rear=櫻悔m。

入隊運算。入隊運算是指在迴圈佇列的隊尾加入乙個新元素。操作過程如下:

a.首先判斷迴圈謹滑蘆佇列是否滿。當迴圈佇列非空(s=1)且隊尾指標等於排頭指標時,說明迴圈佇列己滿,不能進行入隊運讓孝算。這種情況稱為「上溢」。此時演算法祥帶結束。

b.然後將隊枯團孝尾指標進一(或基即:rear= rear+ 1),並沒稿當rear=m+1時置rear= 1。

c.最後將新元素x插入隊尾指標指向的位置,並且置迴圈佇列非空標誌。

退隊運算。螞枯蔽 退隊運算敗雹是指在迴圈佇列的排頭位置退出乙個元素並賦給指定的變悶州量。操作過程如下:

a.首先判斷迴圈佇列是否為空。當迴圈佇列為空(s=賀兄0)時,高做不能進行退隊運算。這種情況稱為「下戚拍衡溢」。

此時演算法結束。

b.然後將排頭叢衡扒指攔顫針進一(即front= front+ 1),並當front=m+ 1時置front= 1。滲昌。

c.再將排頭指標指向的元素賦給指定的變數。

d.最後判斷退隊後迴圈佇列是否為空模猜沒兆喚。當front=rear時旦納置迴圈佇列空標誌(即s=0)。

迴圈佇列是順序儲存結構還是邏輯結構?怎麼區分這兩種結構

邏輯結抄 構是指邏輯上這些元素 的關係,不bai是物理位置上的關du系。其實,你知zhi道了鏈式儲存結構與順序存dao儲的區別也就理解了。鏈式儲存就是邏輯結構的很直觀地體現!順序儲存就是在儲存器內儲存的方式即是順序的,也就是在儲存器中是乙個元素緊挨著下乙個,元素的位址是連續的一批儲存單元。哪位知道迴...

假設以陣列A存放迴圈佇列的元素,其頭指標是front

d頭指標為42,到下乙個數的時候,指標 1變成43,所以到50的時候,指標為92 乙個迴圈佇列用陣列a m 存放元素,已知其頭 尾指標分別是front和rear,則當前佇列中有 b 個元素。b.rear front 1 m m 這是求m的模運算,即 m m 0.b 選項的分子上的 m 主要是為了解決...

在具有N個單元的順序儲存的迴圈佇列中,假定front和rea

queue queue build an empty queue bool queue empty const rear 1 maxqueue front 為判別佇列滿的條件 即答案選擇a 在乙個鏈佇列中,假定front和rear分別為隊首和隊尾指標,則刪除乙個節點的操作為 正確操作為 front ...