《資料結構與演算法》之佇列

2021-10-07 03:39:11 字數 1316 閱讀 2067

《資料結構與演算法》之鍊錶

《資料結構與演算法》之鏈棧

《資料結構與演算法》之排序

《資料結構與演算法》之二分查詢

《資料結構與演算法》之二叉樹

如何理解「佇列」?

你可以把它想象成排隊買票,先來的先買,後來的人只能站末尾,不允許插隊。先進者先出,這就是典型的「佇列」。我們知道,棧只支援兩個基本操作:入棧 push()和出棧 pop()。佇列跟棧非常相似,支援的操作也很有限,最基本的操作也是兩個:入隊 enqueue(),放乙個資料到佇列尾部;出隊 dequeue(),從佇列頭部取乙個元素。所以,佇列跟棧一樣,也是一種操作受限的線性表資料結構。佇列的實現有兩種方式,基於陣列來實現的棧我們稱為順序佇列,基於鍊錶來實現的棧我們稱為鏈式佇列

我這裡只實現了順序佇列,這個佇列是乙個迴圈佇列。它的好處在於避免了佇列中的資料搬移操作,有利必有弊,壞處就是會浪費掉乙個儲存空間。demo位址

1.1 實現

/// 迴圈佇列、可以避免順序佇列的資料搬移操作,但是會浪費乙個儲存空間

class arrayqueue: nsobject

}

1.2進佇列

/// 進佇列

/// - parameter data: 進佇列資料

/// - returns: 進佇列結果

func enqueue

(data: any)

-> bool

if arrayqueue?

.count == size

else

tail =

(tail!+1

)% size!

return true

}

1.3出佇列

/// 出佇列

/// - returns: 佇列資料

func dequeue()

-> any?

let data = arrayqueue!

[head!

] head =

(head!+1

)% size!

return data

}

1.4用法

let arrayqueue = arrayqueue.

init

(size:4)

for i in0.

..4for _ in0.

..4for i in4.

..7

資料結構與演算法之佇列

佇列是乙個有序的線性列表,可以用陣列或鍊錶來實現,遵循先進先出 後進後出的原則。佇列只能從列表的一端進行入隊另一端進行出隊操作。佇列有兩種儲存資料的形式 順序儲存 順序儲存的佇列也稱為順序佇列,內部使用陣列來實現的,順序佇列又分為非迴圈順序佇列和迴圈順序佇列。順序佇列是採用兩個指標,頭指標 fron...

資料結構與演算法之佇列

佇列介紹 1.佇列是乙個有序列表,可以用陣列或是鍊錶來實現。2.遵循先入先出的原則。即 先存入佇列的資料,要先取出。後存入的要後取出 3.示意圖 陣列模擬佇列 當我們將資料存入佇列時稱為 addqueue addqueue 的處理需要有兩個步驟 思路分析 1.將尾指標往後移 rear 1 當fron...

資料結構與演算法之佇列

前言 我寫資料結構與演算法這幾篇博文的目的是為了讓大家對資料結構與演算法有乙個基礎的認知。想更上一層樓的還須各位自學。佇列是資料結構的一種。他的原理是先進先出 後進後出 和棧,表一樣,佇列也分為順序佇列和鏈佇列。如圖 順序棧最開始時 順序佇列插入元素後 順序佇列刪除元素後 總結順序佇列的特點 順序佇...