• 链表--单向链表


    单向链表实现

    class Node {
      constructor(element) {
        this.element = element;
        this.next = null;
      }
    }
    
    class LinkedList {
      constructor() {
        this.head = new Node('head');
      }
    
      find(element) {
        let currentNode = this.head;
        while (currentNode && currentNode.element) {
          if (currentNode.element === element) {
            return currentNode;
          } else {
            currentNode = currentNode.next;
          }
        }
        return null;
      }
    
      insert(element, newElement) {
        const currentNode = this.find(element);
        if (!currentNode) {
          throw new Error('未查找到元素');
        }
        const insertNode = new Node(newElement);
        insertNode.next = currentNode.next;
        currentNode.next = insertNode;
      }
    
      findPre(element) {
        let preNode = this.head;
        while (preNode.next && preNode.next.element !== element) {
          preNode = preNode.next;
        }
        if (!preNode.next) {
          throw new Error('没有找到要删除的节点');
        }
        return preNode;
      }
    
      remove(element) {
        const preNode = this.findPre(element);
        preNode.next = preNode.next.next;
      }
    
      display() {
        let currentNode = this.head;
        const result = [];
        do {
          result.push(currentNode.element);
          currentNode = currentNode.next;
        } while (currentNode);
        return result.toString();
      }
    }
    
    const list = new LinkedList();
    list.insert('head', 'second');
    list.insert('second', 'third');
    list.insert('second', 'four');
    console.log(list.display());
    list.remove('second');
    
    console.log(list.display());
  • 相关阅读:
    安装IDM扩展
    Go_数组&切片
    Mycat概念&安装
    IDEA自定义主题
    完全卸载Oracle11g
    创建型模式——单例模式(Singleton)
    设计模式统计
    PHP解压带密码的zip文件
    Win推荐软件
    如何设置线程池的线程数?
  • 原文地址:https://www.cnblogs.com/shangyueyue/p/10911889.html
Copyright © 2020-2023  润新知