資料結構學習筆記 3 佇列

2021-10-03 09:48:57 字數 2258 閱讀 8306

型別名:佇列(queue)

資料物件集:乙個有0個或多個元素的有窮線性表

操作集:長度為maxsize的堆疊q∈queue, 佇列元素item∈elementtype

1.生成長度為maxsize的空佇列

queue creatqueue(int maxsize);

2.判斷佇列q是否已滿

bool isfullq(queue q, int maxsize);

3.將資料元素item插入佇列q中

bool addq(queue q, elementtype item);

4.判斷佇列q是否已空

bool isemptyq(queue q);

5.刪除並返回隊首元素

elementtype deleteq(queue q);

佇列的順序儲存結構通常由乙個一維陣列和乙個記錄佇列頭元素位置的變數front以及乙個記錄佇列尾元素位置的變數rear組成。

形成的陣列搬過來,變成乙個環,便為迴圈佇列。

為了判斷佇列的空與滿,迴圈佇列僅使用n-1個陣列空間

定義**如下

typedef

struct qnode *queue;

struct qnode

;

(1)建立迴圈佇列(createqueue)
queue createqueue

(int maxsize )

(2)判斷佇列是否已滿(isfull)
bool

isfull

( queue ptrq )

(3)入佇列(addq)

入隊時要判斷佇列是否已滿

bool

addq

(queue ptrq, elementtype item)

else

}

(4)判斷佇列是否已空(isempty)
bool

isempty

(queue ptrq)

(5)出佇列(deleteq)

出隊時判斷當前佇列是否為空

elementtype deleteq

(queue ptrq)

else

}

佇列的鏈式儲存結構也可以用乙個單鏈表實現,插入和刪除操作分別在鍊錶的兩頭進行。佇列指標front應該指向煉表頭

struct node 

struct qnode

;typedef

struct qnode *queue;

queue ptrq;

(1)不帶頭結點的鏈式佇列初始化( createqueue)
queue createqueue()

(2)不帶頭結點的鏈式隊列入隊操作
bool

addq

(queue ptrq, elementtype item)

else

return

true

;}

(3)不帶頭結點的鏈式佇列出隊操作
elementtype deleteq

(queue ptrq)

frontcell = ptrq-

>front;

if(ptrq-

>front == ptrq-

>rear)

//若佇列只有乙個元素 則刪除後佇列置為空

ptrq-

>front = ptrq-

>rear =

null

;else

ptrq-

>front = frontcell-

>next;

frontelem = frontcell-

>data;

free

(frontcell)

;//釋放被刪除結點的空間

return frontelem;

}

資料結構學習筆記(5) 佇列

二 佇列的鏈式儲存實現 佇列是具有一定操作約束的線性表,只能在一端插入,在另一端刪除 佇列是先進先出 fifo 的線性結構 型別名稱 佇列 queue 資料物件集 乙個有0個或者多個元素的有窮線性表 操作集 長度為maxsize的佇列q in queue,佇列元素item in elementtyp...

資料結構學習日誌之六 佇列

和棧相反,佇列是一種先進先出的線性表。它只允許在表的一端插入,而在另一端刪除元素。佇列也有兩種儲存表示 用鍊錶表示的佇列簡稱為鏈佇列。乙個鏈佇列顯然需要兩個分別只是隊頭和隊尾的指標,分別稱為頭指標和尾指標才能唯一確定。佇列和線性表的單鏈表一樣,為了操作方便,佇列也有乙個頭結點,並令頭指標指向頭結點。...

資料結構學習一佇列整理

class myqueue 入隊成功了,返回true public boolean enqueue int x 出隊,成功返回true public boolean dequeue p start return true 獲取隊首元素 public intfront c判斷佇列是否為空 public...