佇列是乙個線性結構,特點是在某一端新增資料,在另一端刪除資料,遵循先進先出的原則。
這裡會講解兩種實現佇列的方式,分別是單鏈佇列和迴圈佇列。
class
queue
enqueue
(item)
dequeue()
getheader()
getlength()
isempty()
}
因為單鏈佇列在出隊操作的時候需要 o(n) 的時間複雜度,所以引入了迴圈佇列。迴圈佇列的出隊操作平均是 o(1) 的時間複雜度。
class
sqqueue
enqueue
(item)
this
.queue[
this
.last]
= item
this
.size++
this
.last =
(this
.last +1)
%this
.queue.length
}dequeue()
let r =
this
.queue[
this
.first]
this
.queue[
this
.first]
=null
this
.first =
(this
.first +1)
%this
.queue.length
this
.size--
// 判斷當前佇列大小是否過小
// 為了保證不浪費空間,在佇列空間等於總長度四分之一時
// 且不為 2 時縮小總長度為當前的一半if(
this
.size ===
this
.getlength()
/4&&this
.getlength()
/2!==0
)return r
}getheader()
return
this
.queue[
this
.first]
}getlength()
isempty()
resize
(length)
this
.queue = q
this
.first =
0this
.last =
this
.size
}}
筆記 前端需要了解的常見資料結構 棧
棧是乙個線性結構,在計算機中是乙個相當常見的資料結構。棧的特點是只能在某一端新增或刪除資料,遵循先進後出的原則。每種資料結構都可以用很多種方式來實現,其實可以把棧看成是陣列的乙個子集,所以這裡使用陣列來實現。class stack push item pop peek getcount isempt...
筆記 前端需要了解的常見資料結構 鍊錶
鍊錶是乙個線性結構,同時也是乙個天然的遞迴結構。鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。但是鍊錶失去了陣列隨機讀取的優點,同時鍊錶由於增加了結點的指標域,空間開銷比較大。class node class linklist find header,index,currentin...
常見資料結構
陣列 array 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列...