javaScript数据结构之栈
文/三和小钢炮
01 栈
栈是遵从后进先出原则的有序集合。
02 栈的接口
由于还没有介绍js接口,我们先用java代码代替
public interface Stack {
// 添加元素到栈顶
public void push(Element... e);
// 移除栈顶的元素,并返回
public Element pop();
// 返回栈顶的元素
public Element peek();
// 栈内是否有元素
public boolean isEmpty();
// 移除栈内所有的元素
public void clear();
// 返回栈的长度
public int size();
}
03 实现一个简单的栈
function Stack(arr){
var _item = arr || [];
this.push = function(elem) {
_item.push(elem);
};
this.pop = function() {
return _item.pop();
};
this.peek = function() {
return _item[_item.length-1];
};
this.isEmpty = function() {
return _item.length === 0;
};
this.size = function() {
return _item.length;
};
this.clear = function() {
_item = [];
};
this.toString = function() {
return _item.toString();
};
}
var s = new Stack(['a','b']);
s.push('1');
s.push('2');
console.log(s.toString());
04 写一个二进制的转换
function divideBy2(num) {
var stack = new Stack();
var rem = null;
var res = '';
while(num > 0) {
rem = Math.floor(num % 2);
stack.push(rem);
num = Math.floor(num / 2);
};
while(!stack.isEmpty()) {
res += stack.pop().toString();
};
return res;
}
var d = divideBy2(2);
console.log(d);