棧:先進後出,新新增和待刪除的元素都儲存在棧頂。可以用陣列的push方法入棧,pop出棧。
class stack
push(element)
pop()
peek()
isempty()
size()
clear()
print()
tostring()
}
棧的實際應用:二進位制轉十進位制、十進位制轉換任意進製(二進位制、八進位制、十六進製制);平衡圓括號、漢諾塔問題
/**
* 十進位制轉二進位制
* @param num --十進位制資料
* @returns 轉換後的二進位制數
*/function devideby2(num)
while (!stack.isempty())
return binarystr;}
/** * 十進位制轉換為任意進製
* @param num
* @param base
* @returns
*/function baseconvert(num,base)
while (!stack.isempty())
return basestr;
}
檢查括號是否匹配:左括號入棧,當檢測到右括號時,進行出棧,看出棧的左括號與右括號是否可以配對,以此類推,直到棧為空。
/**
* 括號配對
* @param str 包含括號的字串
* @returns 配對成功返回true,失敗返回false
*/function checksymbol(str) ',
balanced = true,
index = 0,
tmp,
stack = new stack(),
arr = str.split('');
while (balanced && index < arr.length)
else
else }}
index++;
}return (balanced && stack.isempty());
}
js資料結構 棧
棧是一種遵循後進先出 lifo 的資料結構,其總共就兩個主要的操作,分別是push和pop。看上面這張圖可以大致的知道,棧的幾個特點 push操作 pop操作 通過上面的幾個特點,來看一看js如何用 實現乙個棧 class stack push操作 push x push乙個新的資料,棧頂的指向也同...
js資料結構 棧
棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素...
js實現資料結構 棧
棧是一種遵從後進先出 lifo 原則的有序集合。新新增的或待刪除的元素都儲存在棧的同一端,稱作棧頂,另一端就叫棧底。後進先出 新元素都靠近棧頂,舊元素都接近棧底,所以新元素會比舊元素要先出棧 放在桌子上的一堆書和餐廳裡堆放的盤子 建立棧 建立乙個類來表示棧,宣告棧的各種屬性和方法,如下 宣告棧和棧的...