棧是一種後進先出的資料結構
其限制是僅允許在一端進行插入和刪除。這一端被稱為棧頂,另一端稱為棧底;
lfo( last in first out)後進入的元素第乙個彈出棧空間;
向—個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;
從—個棧刪除元素又稱作岀棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素;
基於陣列實現棧:
class
stack
// 新增乙個新元素到棧頂
push
(el)
// 移除棧頂元素,返回被移除元素
pop(
)// 返回棧頂的元素
peek()
// 判斷是否為空
isempty()
// 清空
clear()
// 返回元素個數
getsize()
// tostring
tostring()
return str
}}
實現十進位制轉二進位制?
思路:將十進位制數字不斷和2相除,保留餘數,直到結果取整後為0。將得到的餘數從後向前拼接組成二進位制資料
// 十進位制轉二進位制
function
dec2bin
(number)
// 從後向前拼接棧中資料
let binstr =
''while
(!stack.
isempty()
)return binstr
}
js資料結構和演算法(二)棧和佇列
棧和佇列都是動態的集合,在棧中,可以去掉的元素是最近插入的哪乙個。棧實現了後進先出。在佇列中,可以去掉的元素總是在集合中存在的時間最長的那乙個。佇列實現了先進先出的策略。棧的官方定義 棧 stack 是乙個後進先出 last in first out,lifo 的線性表,它要求只在表尾進行刪除和插入...
js資料結構 棧
棧是一種遵循後進先出 lifo 的資料結構,其總共就兩個主要的操作,分別是push和pop。看上面這張圖可以大致的知道,棧的幾個特點 push操作 pop操作 通過上面的幾個特點,來看一看js如何用 實現乙個棧 class stack push操作 push x push乙個新的資料,棧頂的指向也同...
js資料結構 棧
棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素...