给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/re…
难点:
1.前端没有链表的概念,会下意识的以为这个是数组
我们应该把这个图中的每一个元素想像成一个对象,他的val值是1,2,3这样,他的next是一个地址,指向后面的对象。
解题思路
反转链表你只需要把指向下一个节点的指针指向上一个节点就行
我们创建一个第三方变量中转,让链表中的next的指向改为它本身,然后不断替换本身为next的下一个指向,这样实现链表反转。
代码:
这里不能放到编辑器去运行,因为本身就是模拟的链表。
head其实就是链表的第一个元素。它的next 指向链表的第二个元素(val为2) 总结一句话:用两个指针一前一后遍历链表不断反转指针。
var reverseList = function(head) {
var p1 = head
var p2 = null
while(p1){
var temp = p1.next
p1.next = p2
p2 = p1
p1 = temp
}
return p2
};
其实这个题本身并不复杂,练习它是为了加深对链表这一个数据结构的认识。