分享一下自己寫的資料結構的順序迴圈佇列嗯

2021-09-27 11:14:03 字數 2927 閱讀 6318

很多大學剛學資料結構的小夥伴,對於這門課程理解不夠深刻,在上機實驗中會遇到各種困難,作為過來的小萌新,寫下這篇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 建築師 一位夫人打 給建築師,說每當火車經過時,她的睡床就會搖動。這簡直是無稽之談 建築師回答說,我來看看。建築師到達後,夫人建議他躺在床上,體會一下火車經過時的感覺。建築師剛 躺下,夫人的丈夫就回來了。他見此情形,便厲聲喝問 你躺在我妻子的床上幹什麼?建築師戰戰兢兢地回答 我說是在等火車,你會...