JavaScript資料結構之棧結構

2021-09-24 07:43:39 字數 2006 閱讀 1046

棧也是一種非常常見的資料結構, 並且在程式中的應用非常廣泛.

我們先來簡單認識一下棧結構, 它的特點和應用場景等.

棧結構

棧(stack),它是一種運算受限的線性表,後進先出(lifo)

生活中類似於棧的

棧結構的**

程式中什麼是使用棧實現的呢?

函式呼叫棧**:

棧面試題

我們來實現乙個類, 用於模擬棧中的操作.

棧的建立

棧的操作

現在我們來實現這些方法:

push方法

// 壓棧操作

this.push = function (element)

複製**

pop方法

// 出棧操作

this.pop = function (element)

複製**

peek方法

// peek操作

this.peek = function ()

複製**

isempty方法

// 判斷棧中的元素是否為空

this.isempty = function ()

複製**

size方法

// 獲取棧中元素的個數

this.size = function ()

複製**

完整**

// 棧類

function

stack()

// 出棧操作

this.pop = function ()

// peek操作

this.peek = function ()

// 判斷棧中的元素是否為空

this.isempty = function ()

// 獲取棧中元素的個數

this.size = function ()

}複製**

棧的使用

// 模擬面試題

var stack = new stack()

// 情況下**模擬

stack.push(6)

stack.push(5)

stack.pop() // 5

stack.push(4)

stack.pop() // 4

stack.push(3)

stack.pop() // 3

stack.pop() // 6

stack.push(2)

stack.push(1)

stack.pop() // 1

stack.pop() // 2

複製**

我們已經學會了如何使用stack類,現在就用它解決一些電腦科學中的問題。

十進位制轉二進位制

如何實現十進位制轉二進位制?

如果我們希望使用**來實現這個功能呢?

// 封裝十進位制轉二進位制的函式

function

dec2bin(decnumer)

// 將資料取出

var binayristrng = ""

while (!stack.isempty())

return binayristrng

}複製**

測試**:

// 測試函式

alert(dec2bin(10))

alert(dec2bin(233))

alert(dec2bin(1000))

複製**

JavaScript資料結構之佇列

接上篇 資料結構之棧 資料結構之 佇列 1.佇列的定義 佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 end 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊首。佇列的資料元素又稱為佇列元素。在佇...

資料結構 棧(JavaScript)

棧是一種遵從後進先出 lifo 原則的有序集合。新新增的或待刪除的元素都儲存在棧的 末尾,稱作棧頂,另一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。舉個栗子,差不多這樣子。初始化棧的高度以及棧頂指標 var length 0 var top null 宣告常用方法 this.push f...

二 javascript資料結構

1 識別符號 var test test 定義變數開頭不能是數字 var 1a 1a 定義變數開頭可以是下劃線 var a a 定義變數開頭可以是中文 var 變數 a 2 關鍵字與保留字 就是這些保留字關鍵字,你不能定義變數或者函式等等,反正別用就行了 abstract arguments boo...