leecode 206 反转链表解析

11 阅读1分钟

给出了head是一个链表,输出此head的链表反转(链表为单链表)

首先明确head为链表,并非数组 单列表由多个节点对象组成, 每个节点包括

{val:值
next:下一个节点
}
等价于:
node1.val = 1
node1.next.val = 2
node1.next.next.val = 3
node3.val = 3
node3.next = null
相对数组插入删除,链表没有索引,可以通过指针更快,内存为非连续的

解题:

function(head){
 let a = null 声明a进行存值
   while(head){ //while当head为true即循环,当循环完成时head刚好为null停止
        let b = head.next //使用b进行后续值的保存防止断链
        head.next = a //反转指针
        a = head //a前进
        head = b //head前进
   }
   return a
  }

拓展:双链表:在每个节点加入了prev指向上一个节点

{prev:上一个节点
val:值
next:下一个节点
}

好处:可在知道某一节点即可双向遍历,但更复杂消耗储存