陣列表示迴圈佇列 入隊出隊無頭指標操作出錯

時間 2025-01-17 18:40:10

1樓:網友

需要仔細看一下再樓主。

回樓上:datatype sequ[m]確實不通,陣列的大小必須是常量,雖然定義。

const int m=5,依然是不行的。

datatype *dequen(qu *sq)第乙個*號宣告函式返回乙個值,該值是位址型別的,而且是整形資料的。

陣列的長度應該是5,不是maxsize

迴圈佇列是通過指標來實現佇列的頭尾相接為什麼是錯的

2樓:生活暢談者

迴圈佇列。中由於入隊時尾指標向前追趕頭指標,出隊時頭指標向前追趕尾指標,造成隊空和隊滿時頭尾指標均相等,因此無法通過條件front==rear來判別佇列是空還是配毀滿。

另一種方式就是資料結構。

常用的:隊滿時(rear+1)%n==front,n為佇列長度(所用陣列大小),謹啟由於rear,front均為所用空間的指標,迴圈只是邏輯上培晌備的迴圈,所以需要求餘運算。

3樓:du知道君

我記得迴圈佇列其實就是大卜個陣列,是靠隊頭、隊尾、下標來實現頭知租尾相接 如佇列a有5個搭仿兆位置,當到達a時,判斷到達隊尾了,下標變道隊頭0,即可回到a——佇列頭部。迴圈佇列應該注意判斷佇列是否為空,是否滿。

4樓:後湘雲

其實就是個陣列,靠隊頭隊尾下標來實現的。

在迴圈佇列中,僅依據頭尾指標相等,無法判斷佇列是"空"還是"滿".解決此問題的兩種方法是什麼?

5樓:匿名使用者

迴圈佇列中,由於入隊時尾指標向前追趕頭指標;出隊時頭指標向前追趕尾指標,造成隊空和隊滿時頭尾指標均相等。因此,無法通過條件front==rear來判別佇列是"空"還是"滿"。

解決這個問題的方法至少有兩種:

另設一布林變數以區別佇列的空和滿;

另一種方式就是資料結構常用的: 隊滿時:(rear+1)%n==front,n為佇列長度(所用陣列大小),由於rear,front均為所用空間的指標,迴圈只是邏輯上的迴圈,所以需要求餘運算。

如圖情況,隊已滿,但是rear(5)+1=6!=front(0),對空間長度求餘,作用就在此6%6=0=front(0)。

陣列為什麼不是線性結構,線性表 樹 陣列 佇列哪個不屬於線性結構?

禾木由 線性結構是一個有序資料元素的集合,雖然陣列是有序的元素序列,但它的陣列元素並非只能是基後設資料型別,還可以是結構 列舉或類。因此,陣列不屬於線性結構。在c語言中,陣列屬於構造資料型別。一個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又...

foreach迴圈陣列賦值問題

具體例項如下 package com.zte public class foreachdemo public static void printary int ary public static void main string args int dist new int system.out.pr...

EXCLE一列迴圈陣列分段,標記迴圈節點

用vba sub 標記a列 dim rng as range,a b c i j la for each rng in intersect range a a usedrange a rng.value b la len a j 0 for i 1 to la j j 1 c left a j if...