c 迴圈佇列基本操作案例

2021-09-24 16:31:47 字數 1765 閱讀 7212

迴圈佇列其實是為了解決順序棧的假溢位。設佇列大小是m。

這裡特別提出一點就是計算佇列長度

(q.rear - q.front + maxqsize) % maxqsize;

此處說明原因,因為此處為迴圈佇列。

因為迴圈佇列中,當q.rear的值小於q.front時,他們的差是負數要加上佇列最大長度才是佇列的長度,而如果他們的差大於0再加上最大長度時求餘可以得到佇列的長度。

/* 迴圈佇列基本操作 */

#include

#include

using namespace std;

#define maxqsize

1000

#define ok

1#define error

0#define overflow-1

typedef char qelemtype;

typedef char selemtype;

typedef int status;

typedef struct sqqueue;

// 初始化迴圈佇列

status init_queue

(sqqueue &q)

// 求迴圈佇列的長度

int calc_queuelength

(sqqueue q

)// 獲取迴圈佇列的人頭元素

selemtype gethead_queue

(sqqueue q

)// 入隊

status entry_queue

(sqqueue &

q, qelemtype e)

// 出隊

status output_queue

(sqqueue &

q, qelemtype &e)

int main()

else

break

;case2:

if(flag)

else

} cout << endl << endl;

}else

cout <<

"佇列未建立成功,請重新檢測."

<< endl << endl;

file.

close()

;}break

;case3:

if(flag !=-1

&& flag !=0)

cout <<

"佇列頭部元素為:\n"

<<

gethead_queue(q

)<< endl << endl;

else

cout <<

"佇列中無此資料元素,請重新檢測."

<< endl << endl;

break

;case4:

cout <<

"佇列依次彈出的資料元素為:"

<< endl;

while

(output_queue(q

, e)

) cout << endl << endl;

break;}

}return0;

}

c 順序棧基本操作案例(檔案)

順序棧的基本操作 include include using namespace std define ok 1 define error 0 define overflow 2 define maxsize 50 儲存空間的初始分配數量 typedef int status 返回函式狀態值 typ...

JS DOM操作案例

1 var text document.queryselector input 2 獲取焦點 3 text.onfocus function 7 8 失去焦點 9 text.onblur function 13 文字 請輸入6 12位密碼 給每個可以換膚的迴圈註冊點選事件 3for var i 0 ...

c 鏈棧的基本操作案例(檔案)

鏈棧的基本操作 include include using namespace std define ok 1 define error 0 define overflow 2 typedef int status typedef char selemtype 定義鏈棧型別 typedef stru...