Skip to content

Instantly share code, notes, and snippets.

@giscafer
Created July 21, 2018 07:41
Show Gist options
  • Save giscafer/a45c414b1fee6a601886f3cff2ae4118 to your computer and use it in GitHub Desktop.
Save giscafer/a45c414b1fee6a601886f3cff2ae4118 to your computer and use it in GitHub Desktop.
JavaScript数据结构栈模拟
/* 栈实现 */
const Stack = (() => {
// 闭包使得item为私有变量,避免外部调用(ES6无私有变量)
let item = new WeakMap();
// 模拟实现栈 Stack
class Stack {
constructor() {
item.set(this, []);
}
push(v) {
let rem = item.get(this);
rem.push(v);
}
pop() {
let rem = item.get(this);
return rem.pop();
}
peek() {
let rem = item.get(this);
return rem[rem.length];
}
clear() {
item.set(this, []);
}
isEmpty() {
let rem = item.get(this);
return rem.length === 0;
}
}
return Stack;
})();
// test
// 二进制数转换,使用栈来解决
function devideBy2(decNumber) {
let remStack = new Stack();
let rem;
let binaryString = '';
while (decNumber > 0) {
rem = Math.floor(decNumber % 2);
remStack.push(rem);
decNumber = Math.floor(decNumber / 2);
}
while (!remStack.isEmpty()) {
binaryString += remStack.pop().toString();
}
return binaryString;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment