筆記 前端需要了解的常見資料結構 佇列

2021-10-05 19:47:58 字數 1377 閱讀 5258

佇列是乙個線性結構,特點是在某一端新增資料,在另一端刪除資料,遵循先進先出的原則。

這裡會講解兩種實現佇列的方式,分別是單鏈佇列和迴圈佇列。

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語言中,陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列...