js資料結構第三彈 棧

2021-09-17 05:24:42 字數 1923 閱讀 7444

特點:棧是一種高效的資料結構, 因為資料只能在棧頂新增或刪除。棧被稱為一種**先出(lifo, last-in-first-out) 的資料結構。

主要操作:對棧的兩種主要操作是將乙個元素壓入棧和將乙個元素彈出棧。 入棧使用push()方法, 出棧使用pop()方法。

另乙個常用的操作是預覽棧頂的元素。 pop() 方法雖然可以訪問棧頂的元素, 但是呼叫該方法後, 棧頂元素也從棧中被永久性地刪除了。peek()方法則只返回棧頂元素, 而不刪除它。

clear()方法清除棧內所有元素,length屬性記錄棧內元素的個數。定義了乙個empty屬性, 用以表示棧內是否含有元素

1.定義 stack 類的建構函式開始:

function stack()
function push(element)
特別注意 ++ 操作符的位置, 它放在 this.top 的後面, 這樣新入棧的元素就被放在

top 的當前值對應的位置, 然後再將變數 top 的值加 1, 指向下乙個位置。

3.pop() 方法——它返回棧頂元素, 同時將變數 top 的值減 1:

function pop()
4.peek() 方法返回陣列的第 top-1 個位置的元素, 即棧頂元素:

function peek()
如果對乙個空棧呼叫 peek() 方法, 結果為 undefined。 這是因為棧是空的, 棧頂沒有任何元素。

5.length() 方法通過返回變數 top 值的方式返回棧內的元素個數:

function length()
6.clear()方法將變數 top 的值設為 0

function clear()
1 數制間的相互轉換

假設想將數字 n 轉換為以 b 為基數的數字, 實現轉換的演算法如下:

(1) 最高位為 n % b, 將此位壓入棧。

(2) 使用 n/b 代替 n。

(3) 重複步驟 1 和 2, 直到 n 等於 0, 且沒有餘數。

(4) 持續將棧內元素彈出, 直到棧為空, 依次將這些元素排列, 就得到轉換後數字的字串形式。

function mulbase(num, base)  while (num > 0);

var converted = "";

while (s.length() > 0)

return converted;

}

2 回文

字串完整壓入棧內後, 通過持續彈出棧中的每個字母就可以得到乙個新字串, 該字串剛好與原來的字串順序相反。 我們只需要比較這兩個字串即可, 如果它們相等, 就是乙個回文。

function ispalindrome(word) 

var rword = "";

while (s.length() > 0)

if (word == rword)

else

}

3 遞迴演示

使用棧模擬遞迴過程階乘

function fact(n) 

var product = 1;

while (s.length() > 0)

return product;

} print(factorial(5)); // 顯示 120

print(fact(5)); // 顯示 120

js資料結構 棧

棧是一種遵循後進先出 lifo 的資料結構,其總共就兩個主要的操作,分別是push和pop。看上面這張圖可以大致的知道,棧的幾個特點 push操作 pop操作 通過上面的幾個特點,來看一看js如何用 實現乙個棧 class stack push操作 push x push乙個新的資料,棧頂的指向也同...

js資料結構 棧

棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素...

js 資料結構 棧

棧 先進後出,新新增和待刪除的元素都儲存在棧頂。可以用陣列的push方法入棧,pop出棧。class stack push element pop peek isempty size clear print tostring 棧的實際應用 二進位制轉十進位制 十進位制轉換任意進製 二進位制 八進位制...