# 什么是链表

链表由独立的节点构成,每个节点之间使用变量进行连接。根据节点中存放的节点地址可以分为:

  1. 单向链表(存放着下一跳的地址)
  2. 双向链表(存放着逻辑上的上一跳和下一跳)

# 单向链表

只存放这下一跳的地址。

# 代码实现

function listNode(val,next){
  this.val = val 
  this.next = next
}

let head = new ListNode(1,null)
head.next = new ListNode(2)

# 链表的遍历

function map(head){
  let point  = head
  while(point){
    point = point.next
  }
}

# 链表的插入

function insert(head,val){
  let point  = head
  while(point.next){
    point = point.next
  }
  // 尾部插入
  point.next = new ListNode(val)
}

# 某一个节点的删除

function nodeDelete(head, val){
  if(head.val === val) return head.next
  let point  = head
  while(point.next){
    if(point.next.val === val){
      point.next = point.next.next
      break;
    }
    point = point.next
  }
}

// 尾部插入
nodeDelete(head, 123)