一、题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
二、思路分析
这道题我们用两种方法去做,我更推荐第一个双指针法,我们设置一个空指针当作pre,保存一下我们每次当前指针的next,然后把当前指针的next指向前面的结点这样的话就相当于我们把每一个结点都往前指,
三、AC代码
//双指针
var reverseList = function(head) {
if(!head || !head.next) {
return head
}
let cur = head
let pre = null
while(cur) {
let next = cur.next
cur.next = pre
pre = cur
cur = next
}
return pre
}
//
function reverseNodeList(head) {
let currentNode = null
let headNode = head
while(head && head.next) {
currentNode = head.next //把current先设置为第二个
head.next = currentNode.next
currentNode.next = headNode
headNode = currentNode
}
return headNode
}
四、总结
这道题可以说是一个比较简单常见的链表题,但是很多后续题目的基础,是很重要掌握很多题目的基础,大家一定要深切的掌握好这道题的思想。