zoukankan      html  css  js  c++  java
  • JS链表实现栈和队列

    1. 栈

    top指针记录栈顶元素,插入和删除都是对top操作

    function Node(val) {
        this.val = val;
        this.next = null;
    }
    function Stack() {
        this.top = null;
        this.length = 0;
    }
    /* 入栈 */
    Stack.prototype.push = function (node) {
        if (!this.top) {
            this.top = node;
            this.length++;
        } else {
            node.next = this.top;
            this.top = node;
            this.length++;
        }
    }
    /* 出栈 */
    Stack.prototype.pop = function () {
        let res = this.top || undefined;
        // 删除栈顶
        if (this.top) {
            this.top = this.top.next;
            this.length--;
        }
        return res;
    }
    
    let stack = new Stack();
    stack.push(new Node(1));
    stack.push(new Node(2));
    stack.pop();
    console.log(JSON.stringify(stack, null, '   '));
    stack.pop();
    console.log(JSON.stringify(stack, null, '   '));
    

    2. 队列

    /* 队列 */
    function Node(val) {
        this.val = val;
        this.next = null;
    }
    function Queue() {
        this.front = null;
        this.tail = null;
        this.length = 0;
    }
    /* 插入 */
    Queue.prototype.insert = function (node) {
        if (!this.front) {
            this.front = this.tail = node;
        } else {
            /* 新插入元素放到尾部 */
            this.tail.next = node;
            this.tail = node;
        }
        this.length++;
    }
    /* 弹出 */
    Queue.prototype.pop = function () {
        if (!this.length)
            return -1;
        /* 从头部删除 */
        let res = this.front;
        this.front = this.front.next;
        this.length--;
        /* 删除完毕将尾部删除 */
        if (!this.length)
            this.tail = null;
        return res;
    }
    
    let queue = new Queue();
    queue.insert(new Node(1));
    queue.insert(new Node(2));
    queue.pop();
    console.log(JSON.stringify(queue, null, '   '));
    queue.pop();
    console.log(JSON.stringify(queue, null, '   '));
    
  • 相关阅读:
    春色人间
    如是
    Go -- FileManage 自建云盘
    JavaScript -- 定义二维数组
    mysql 碎片清理
    vue2.0项目中使用Ueditor富文本编辑器示例
    浅谈css中一个元素如何在其父元素居中显示
    CSS -- 文字竖直居中
    memcached与redis区别
    mac -- 安装OpenCV
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/13340906.html
Copyright © 2011-2022 走看看