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, '   '));
    
  • 相关阅读:
    wtk2.1的问题
    扫雷大体完成了
    手机操作系统龟兔赛跑 Symbian深信将打败微软
    Practical UML™ A HandsOn Introduction for Developers
    有意思
    进展
    扫雷完成了:)
    Linux
    有关msn的api的两个网站
    csdn中讨论j2me之前途....
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/13340906.html
Copyright © 2011-2022 走看看