给出了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:下一个节点
}
好处:可在知道某一节点即可双向遍历,但更复杂消耗储存