佇列我們可以看作是買票上車,遵循乙個「先進先出」的乙個原則。
操作:插入的操作叫隊尾入隊(enqueue)
刪除的操作叫對頭出隊(dequeue)
佇列的順序儲存
佇列的儲存結構是由 一維陣列來實現的。
乙個記錄佇列頭元素的位置的變數front
乙個記錄佇列尾元素的位置的變數rear
struct queue;
建立空佇列
struct queue*
creatqueue
(int maxsize)
當rear走到容量的末端的時候,還能入隊嗎?可以,rear可以折返。
//無論是入隊還是出隊,front與rear總是從小到大的增長;
//若超過了陣列的最大下標,front與rear折返回到下標0;
//隊列為空或滿的時候,front與rear都指向同一處,所以我們只用他們指向同一處來判斷佇列滿是不嚴謹的。所以就體現了size的作用。
還要注意小細節,front所指的位置是有資料的,而rear所指的位置是沒有資料的(在未滿的情況下);
入隊enqueue
將元素放入rear位置,然後rear+1;若+1後超過了最大下標,rear的下標置為0;
void
enqueue
(struct queue*q,
int x)
出隊dequeue
emlemenettype dequeue
(struct queue*q)
佇列的鏈式儲存
亦可以用單鏈表來儲存,這樣鍊錶的入隊出隊在鍊錶兩端進行。
在鍊錶尾入隊(就是線性表的尾插)
在煉表頭出隊(刪除第乙個結點,即頭結點後的結點)
struct qnode
;
亦可使用雙向鍊錶來完成。 資料結構複習(2) 棧與佇列
棧 順序棧top 1 or top 0 all right,c stack use 1 top 1時,棧空 top maxsize 1時,棧滿 top 1 棧長 top 0時,棧空 top maxsize 0時,棧滿 top 棧長。共享棧 1 top1 1,top2 maxsize時,棧空 2 to...
資料結構 棧與佇列
題目 1.編寫函式,採用鏈式儲存實現棧的初始化 入棧 出棧操作 2.編寫函式,採用順序儲存實現棧的初始化 入棧 出棧操作 3.編寫函式,採用鏈式儲存實現佇列的初始化 入隊 出隊操作 4.編寫函式,採用順序儲存實現佇列的初始化 入隊 出隊操作 5.編寫乙個主函式,在主函式中設計乙個簡單的選單,分別除錯...
資料結構 棧與佇列
棧的原則是後進先出,即插入與刪除元素均在棧頂進行。獲取棧頂元素 s.top 佇列的原則是先進先出,即插入資料在隊尾進行,刪除資料在隊頭進行。獲取隊頭元素 q.front 思路 用兩個棧,乙個棧用來進隊,乙個棧用來出隊,當資料進入佇列的時候,我們將其壓入乙個棧,當資料出隊的時候,我們將儲存在棧內的資料...