迴圈佇列其實是為了解決順序棧的假溢位。設佇列大小是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...