栈的介绍
栈是和链表相似的数据结构,相对来说更加的高效,因为它只能在栈顶进行插入和删除操作,实现起来更加的简单,而且很快。从表达式求值到函数的调用,都可以看到栈的使用。栈这种数据结构,我们可以具体的类似于餐厅里面的一叠盘子,每次我们取盘子都只能从最上面拿,放盘子只能放在最上面,所以栈是一种先入后出的数据结构。具体的操作有pop()入栈,和push()出栈,peek()方法只访问栈顶的元素,但是不删除它。下面看具体的实现方法。
//datastore保存元素,top记录栈顶的位置
function stack() {
this.dataStore = [];
this.top = 0;
this.push = push;
this.pop = pop;
this.peek = peek;
this.length = length;
this.clear = clear;
}
function push( element ) {
this.dataStore[ this.top++ ] = element;
//this.dataStore.push( )
}
function pop() {
return this.dataStore[--this.top];
}
function peek() {
return this.dataStore[ this.top - 1 ];
}
function length () {
return this.top;
}
function clear () {
this.top = 0 ;
}
//测试用例
// var stack = new stack();
// stack.push("dafei");
// stack.push("dafei2");
// stack.push('dafei3');
// console.log( stack.length() );
// console.log( stack.peek() );
// var pop = stack.pop()
// console.log( pop );
// console.log( stack.peek() );
// stack.clear();
// console.log( stack.length() )
// console.log( stack.peek() );
使用栈进制转换
function mulBase ( num , base ) {
var s = new stack();
do {
s.push(num%base);
num = Math.floor( num /= base );
} while( num > 0 );
var rel = "";
while( s.length() > 0 ) {
rel += s.pop();
}
return rel;
}