栈和队列

412 阅读1分钟

这是我参与更文挑战的第6天,活动详情查看: 更文挑战

栈结构的特点是先进后出。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

批注 2021-06-06 141814.png

我们可以把它类比成一个桶,先放进去的被压在下面,后面放进去的在上面,当我们要用的时候,先从上面一个一个往外面拿。

代码实现栈结构

function Stack(){
    this.arr = [];
    this.push = function (value){
        this.arr.push(value);
    }
    this.pop = function (){
        return this.arr.pop();
    }
}
var stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.arr);
stack.pop();
console.log(stack.arr);

批注 2021-06-06 144453.png

这样就用代码实现了栈结构。

队列

队列结构的特点是先进先出。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除。

批注 2021-06-06 145926.png 我们可以把它比做是一个管道,先进去的就先从管道里面出来,后面进去就要等到前面的出去了才能出去。

代码实现队列结构

function Queue(){
    this.arr = [];
    this.push = function (value){
        this.arr.push(value);
    }
    this.pop = function (){//队列结构和栈结构的不同在于出的时候是让前面的先出来,所以这里我们用shift()方法
        return this.arr.shift();
    }
}
var queue = new Queue();
queue.push(1);
queue.push(2);
queue.push(3);
console.log(queue.arr);
queue.pop();
console.log(queue.arr);

批注 2021-06-06 145232.png

这样就用代码实现了栈结构。