数据结构与算法 | javascript描述

171 阅读1分钟

2019-10-27


栈是一种受限的线性表,后进先出(LIFO)

栈应用

函数栈
!递归容易爆栈

实现栈结构

基于数组的实现

//封装栈类
function Stact(){
    //栈中的属性
    this.items = [];
    //栈的相关属性
    //1.将元素压入栈
    Stack.prototype.push = function(element){
        this.items.push(element)
    }
    //2.从栈中取出元素
    Stack.prototype.pop = function(){
        return this.items.pop()
    }
    //3.查看一下栈顶元素
    Stack.prototype.peek = function(){
        return this.items[this.items.length -1]
    }
    //4.判断栈是否为空
    Stack.prototype.isEmpth = funciton(){
        return this.items.length == 0;
    }
    //5.判断栈中元素的个数
    Stack.prototype.size = function(){
        return this.items.length
    }
    //6.toString方法
    Stack.prototype.toString = function(){
        var resultString =
        for(var i= 0;i<this.items.length;i++){
            resultString += this.item[i]+' '
        }
        return resultString
    }
}

//栈的使用
var s = new Stack();
s.push(1);
s.push(2);
s.pop(2);
alert(s);

//函数:将十进制转化成二进制
funciton dec2bin(decNumber){
    //1.定义栈对象
    var stack = new Stack();
    //2.循环操作
    while(decNumber > 0){
        //2.1获取玉树,并且放入栈中
        stack.push(decNumber % 2);
        //2.2 获取整除后的结果,作为下一次运行的数字
        decNumber = Math.floor(decNumber / 2);
    }
    //3.从栈中取出0和1
    var binaryString = '';
    while(!stack.isEmpth()){
        binaryString += stack.pop();
    }
    return binaryString;
}
//测试
alert(1000);

队列结构

队列(Queue),它是一种受限的线性表,先进先出(FIFO)

队列类的创建

基于数组的实现

    

基于链表的实现