美文网首页
手写链表

手写链表

作者: 邓立_全栈UncleLi | 来源:发表于2021-07-16 12:53 被阅读0次

今天来写一个链表

// 节点
class Node {
    constructor(element) {
        // 元素
        this.element = element

        // 指向下一元素的指针
        this.next = null
    }
}

// 链表
class NodeList {
    constructor() {
        // 头节点
        this.head = null

        // 记录长度
        this.length = 0
    }

    // 增加方法
    append(element) {
        let cur
        let node = new Node(element)
        if (this.head == null) {
            // 首次进来是空的,直接赋值head元素
            this.head = node
        } else {
            cur = this.head
            while (cur.next) {
                // 把当前的下一元素赋值到当前
                cur = cur.next
            }
            // 把node元素添加到末尾
            cur.next = node
        }
        // 记录长度加1
        this.length += 1
    }

    // 删除方法
    removeAt(index) {
        let length = this.length

        // 链表长度为0、参数大于链表长度减1、参数不是数字、参数小于0都属于非法参数
        if (!length || (index > length - 1) || !(typeof index === 'number') || index < 0) {
            throw new Error("非法参数");
        }
        let cur = this.head
        let prev
        let i = 0
        if (index == 0) {
            // 删除第一项,把下一节点指向head
            this.head = cur.next
        } else {
            while (i < index) {
                // 保存上一个和当前值
                prev = cur
                cur = cur.next
                i++
            }
            // 把要删除值的上一个值指向删除值的下一个值
            prev.next = cur.next

            // 把要删除值的下一节点置空
            cur.next = null
        }
        // 记录长度减1
        this.length -= 1

        // 返回删除值元素
        return cur.element
    }
}

相关文章

  • 手写链表

    java基础之简单手写链表,来人,上代码:

  • 手写链表

    今天来写一个链表

  • 单链表的实现--c结构体实现、Python类实现

    手写了一遍链表的代码,写完神清气爽再也不害怕写链表代码了hhhhh 链表的具体代码实现,链表的功能有创建、插入、删...

  • 面试题

    1、手写jsonp的实现http://kb.cnblogs.com/page/139725/ 2、手写链表倒数第K...

  • java单链表排序

    在线手写 java单链表排序 单链表每个节点为: 如果一个单链表为2->1->3->5->4,经过排序后链表结构为...

  • 手写双向链表

    package com.Simba.Utils; /*手写双向链表*/public class LinkedLis...

  • 手写双向链表

    双向链表是指每个节点都包含两个指针分别指向其前驱和后继的链表,双向链表在遍历时更灵活,可以向前或向后遍历,在查找元...

  • 手写双向链表

    双向链表,又称为双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表...

  • 手写单链表

  • 手写单链表实现和LRU算法模拟

    手写单链表,实现增删改查 根据单链表操作,实现LRU算法 新数据插入到链表头部当缓存命中(即缓存数据被访问),数据...

网友评论

      本文标题:手写链表

      本文链接:https://www.haomeiwen.com/subject/vhfbpltx.html