棧也是一種非常常見的資料結構, 並且在程式中的應用非常廣泛.
我們先來簡單認識一下棧結構, 它的特點和應用場景等.棧結構
棧(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...