• 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, '   '));
    
  • 相关阅读:
    Oracle:ORA-12154: TNS:could not resolve the connect identifier specified
    asp.net mvc4 controller
    asp.net MVC4 学习(一)
    Nuget用法
    asp.net mvc4 新特性
    arcgis for silverlight 相关学习资料整理
    (转)ASP.NET 4.0 尚未在 Web 服务器上注册
    EasyUI TreeGrid
    CollabNetSubversionEdge 4.0.4教程
    C# 混淆 反编译
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/13340906.html
Copyright © 2020-2023  润新知