題目:假設以陣列q[m]存放迴圈佇列中的元素, 同時設定乙個標誌tag,以tag == 0和tag == 1來區別在隊頭指標(front)和隊尾指標(rear)相等時,佇列狀態為「空」還是「滿」。試編寫與此結構相應的插入(enqueue)和刪除(dequeue)演算法。
思路:當tag等於0並且頭指標和尾指標指向同一位置時,隊空;當tag等於1並且頭指標和尾指標指向同一位置時,隊滿。
佇列的結構:
#define maxsize 100;
typedef
struct queuequeue;
佇列初始化:
status initqueue
(queue &q)
佇列判空:
bool
isempty
(queue q)
return
false
;}
佇列判滿:
bool
isfull
(queue q)
return
false
;}
入隊:
status enqueue
(queue &q,elemtype n)
q.data[q.rear]
=n; q.rear=
(q.rear+1)
%maxsize;
if(q.rear==q.front)
return ok;
}
出隊:
status dequeue
(queue &q,elemtype &e)
e=q.data[q.front]
; q.front=
(q.front+1)
%maxsize;
if(q.front==q.rear)
return ok;
}
佇列的插入 刪除操作
include using namespace std typedef int elemtype typedef struct node qnode,queueptr typedef struct linkqueue void initqueue linkqueue q int isempty li...
附加判定標誌的迴圈佇列的基本操作
描述 假設以陣列q m 存放迴圈佇列中的元素,同時設定乙個標誌tag,以tag 0和tag 1來區別在隊頭指標 front 和隊尾指標 rear 相等時,佇列狀態為 空 還是 滿 試編寫與此結構相應的插入 enqueue 和刪除 dlqueue 演算法。輸入多組資料,每組資料有兩行。第一行為乙個整數...
帶刪除的優先佇列(延緩刪除,加標記)
本文就不講優先佇列的基本用法了,主要講一下怎麼加標記。具體的應用環境就是給你乙個佇列 或者棧 不斷的加入元素,同時也有可能刪除元素,同時還可能詢問這個佇列裡面的最大值。你求最大值是不能去直接遍歷的,因為會超時,這樣就只能用優先佇列加標記了。具體的做法是 維護兩個優先佇列,乙個是最大值佇列,乙個是刪除...