很多大學剛學資料結構的小夥伴,對於這門課程理解不夠深刻,在上機實驗中會遇到各種困難,作為過來的小萌新,寫下這篇blog希望對需要的朋友有所幫助。咳咳,話不多說,讓我們來看看(順序)佇列叭!
詳見資料結構課本。通俗的說是一種具有先進先出特性的線性表。
在許多場景下,非常實用。
#include
#include
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
status表示一種狀態值
typedef int qelemtype;//定義佇列的結構體
#define queue_init_size 3 //定義佇列的初始大小
#define queueincrement 1 //定義佇列的增量
//以上是資料結構用的前置條件
typedef struct sqqueue;
//定義佇列的結構體此處我寫的是順序佇列 鏈表型的佇列**更簡單
//由於我們要做的是迴圈佇列
status initqueue
(sqqueue &q)
//判斷佇列是否為空 若空返回true 不空則返回false;
status queueempty
(sqqueue q)
//輸出函式
void
putoutqueue
(sqqueue q)
printf
("\n");
}else
printf
("當前隊列為空\n");
}//求佇列長度
intqueuelength
(sqqueue q)
// 迴圈佇列,的插入元素問題 等會解釋
status enqueue
(sqqueue &q,qelemtype e)
else
q.maxqsize+
=queueincrement;
} q.base[q.rear]
=e; q.rear =
(q.rear+1)
%q.maxqsize;
return ok;
}status dequeue
(sqqueue &q,qelemtype &e)
status gethead
(sqqueue &q,qelemtype &e)
void
clearqueue
(sqqueue &q)
void
assign
(sqqueue &q)
}void
feibo
(sqqueue &q,
int k)
else
else
q.maxqsize+
=queueincrement;}
q.base[q.rear]
= q.base[
(q.rear-1)
%q.maxqsize]
+q.base[
(q.rear-2)
%q.maxqsize]
; q.rear =
(q.rear+1)
%q.maxqsize;}}
putoutqueue
(q);
printf
("執行完畢\n");
clearqueue
(q);
}status menu()
void
main()
else
printf
("請初始化佇列\n");
break
;case4:
if(q.base)
else
printf
("請初始化佇列\n");
break
;case5:
clearqueue
(q);
break
;case6:
if(q.base)
else
printf
("請初始化佇列\n");
break
;case7:
if(q.base)
else
printf
("請初始化佇列\n");
break
;case8:
if(q.base)
putoutqueue
(q);
else
printf
("請初始化佇列\n");
break
;case9:
printf
("thanks for using!\n");
exit(0
);}}
while
(code>=
0&& code<10)
;printf
("thanks for using!\n");
}
我覺得吧已經鴿了很久的介紹。太不走心了。
簡單解釋下迴圈佇列追加空間什麼的問題。
經過和小夥伴們的討論分析,對於滿佇列追加空間的重新定位有兩種解決辦法(一種是固定隊首,一種是固定隊尾),怎麼理解具體看下圖吧。畫的不好見諒。
主要是為了解決有其他元素入出佇列的隊首隊尾重定位問題
把乙個定長的順序列拉成乙個圈,可以清晰的認知。隊首隊尾雖然在變,但在順序列中是有固定的標號的。主要是計算新增空間後各個元素的位置應該怎麼移動,隊首隊尾如何變化。
分享一下自己寫的PHP函式
臨近下班了,大約還有20分鐘左右,手頭沒事,給大家分享幾個函式。超級好用喲!擷取字串函式 param string begin 開始字串 param string end 結束字串 param string str 需要擷取的字串 return string function get str beg...
分享故事,放鬆一下自己
1 建築師 一位夫人打 給建築師,說每當火車經過時,她的睡床就會搖動。這簡直是無稽之談 建築師回答說,我來看看。建築師到達後,夫人建議他躺在床上,體會一下火車經過時的感覺。建築師剛 躺下,夫人的丈夫就回來了。他見此情形,便厲聲喝問 你躺在我妻子的床上幹什麼?建築師戰戰兢兢地回答 我說是在等火車,你會...
分享故事,放鬆一下自己
1 建築師 一位夫人打 給建築師,說每當火車經過時,她的睡床就會搖動。這簡直是無稽之談 建築師回答說,我來看看。建築師到達後,夫人建議他躺在床上,體會一下火車經過時的感覺。建築師剛 躺下,夫人的丈夫就回來了。他見此情形,便厲聲喝問 你躺在我妻子的床上幹什麼?建築師戰戰兢兢地回答 我說是在等火車,你會...