C語言中迴圈佇列的隊滿和隊空的判斷條件各是什麼?有什麼不同

2022-02-19 17:55:02 字數 3104 閱讀 8953

1樓:

隊空時: q.front == q.rear;

隊滿時: q.front == (q.rear + 1) % maxsize;

front指向隊首元素,rear指向隊尾元素的下一個元素。

maxsize是佇列長度。

擴充套件資料:

實現的**:

#include

#include

#define maxsize 100  //最大佇列長度

#define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct sqqueue;

//初始化迴圈佇列

q.base = (elemtype *) malloc(maxsize * sizeof(elemtype));  //申請空間

q.front = q.rear = 0;       //隊空

return ok;

//入隊

if ((q.rear + 1) % maxsize == q.front) return error; //隊滿,無法新增

q.base[q.rear] = e;  //插入元素

q.rear =  (q.rear + 1) % maxsize; //隊尾指標+1

return ok;

//出隊

if (q.front == q.rear) return error; //隊空,無法刪除

e = q.base[q.front]

q.front = (q.front + 1) % maxsize;  //隊頭指標+1

return ok;

//返回佇列長度

status length(sqqueue &q) {

return (q.rear - q.front + maxsize) % maxsize;

2樓:保赫瀧簫笛

這就看你的資料結構是什麼樣子的了。如果是順序表,也就是陣列做佇列的載體:

隊滿:top==(end+1)%size

隊空:top==end

如果是連結串列,用指標實現的:

隊滿:top==end->next

隊空:top==end

3樓:匿名使用者

另設長度計數器是一種方法

另設標誌位來判斷也是一種

不過估計你問的是這種, 對空:q.front=q.

rear隊滿:(q.rear+1)%maxqsize=q.

front因為不管隊滿還是對空,就實際而言 都是q.front=q.rear所以隊滿判斷就需要求餘判斷

c語言中迴圈佇列的隊滿和隊空的判斷條件各是什麼?有什麼不同?

4樓:

隊空時: q.front == q.rear;

隊滿時: q.front == (q.rear + 1) % maxsize;

front指向隊首元素,rear指向隊尾元素的下一個元素。

maxsize是佇列長度。

擴充套件資料:

實現的**:

#include

#include

#define maxsize 100  //最大佇列長度

#define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct sqqueue;

//初始化迴圈佇列

q.base = (elemtype *) malloc(maxsize * sizeof(elemtype));  //申請空間

q.front = q.rear = 0;       //隊空

return ok;

//入隊

if ((q.rear + 1) % maxsize == q.front) return error; //隊滿,無法新增

q.base[q.rear] = e;  //插入元素

q.rear =  (q.rear + 1) % maxsize; //隊尾指標+1

return ok;

//出隊

if (q.front == q.rear) return error; //隊空,無法刪除

e = q.base[q.front]

q.front = (q.front + 1) % maxsize;  //隊頭指標+1

return ok;

//返回佇列長度

status length(sqqueue &q) {

return (q.rear - q.front + maxsize) % maxsize;

順序隊的「假溢位」是怎樣產生的?如何知道迴圈佇列是空還是滿? 5

5樓:匿名使用者

答:一般的一維陣列佇列的尾指標已經到了陣列的上界,不能再有入隊操作,但其實陣列中還有空位置,這就叫「假溢位」。

採用迴圈佇列是解決假溢位的途徑。

另外,解決隊滿隊空的辦法有三:

設定一個布林變數以區別隊滿還是隊空;

浪費一個元素的空間,用於區別隊滿還是隊空;

使用一個計數器記錄佇列中元素個數(即佇列長度);

我們常採用法②,即隊頭指標、隊尾指標中有一個指向實元素,而另一個指向空閒元素。

判斷迴圈佇列隊空標誌是: f=rear 隊滿標誌是:f=(r+1)%n

C語言中的棧和佇列有什麼共同點

棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰...

C語言空指標,C語言中的空指標是什麼意思?

空指標是其值為null或0的指標,在下認為稱之為 指向 null或 指向 0的指標都是錯誤說法,因為若有int a,p a 則稱指標p指向了a,並不能說指標p指向了 a,只能說p的值是 a,不然就大錯特錯了。沒有指向 即沒有賦值 或指向的目標已銷燬了的指標稱為懸浮指標 可能人們據說的野指標也是它吧 ...

c語言中什麼情況下跳出while的迴圈

賦值運算子也會返回一個值的 這個值就是賦值運算子左邊的變數賦值後的值,也就是其右邊的表示式的值,只要輸入的不是字元eof,while 裡的判斷條件就是真,因此可以跳出迴圈 跳出while迴圈有以下四種可能 bai1 while expr 的判斷條件du為假時,自zhi動退出循 dao環。即專expr...