题目
反转一个链表
示例:
1 | 输入: 1->2->3->4->5->NULL |
解法
这道题我们需要两个额外的链表节点变量ListNode
来协助完成
假设我们有一个1->2->3->4->5
的链表,我们定义cur
和prev
两个节点变量,分别用来表示当前节点和上一个节点,cur
初始指向头节点,prev
初始为空,然后遍历这个链表
从1
这个节点开始,此时cur
即为1
,我们只需要在遍历过程中不断的改变每个节点指针的方向,让它指向前一个节点即可,需要注意的就是,大部分语言都需要实现存下cur.next
的值,否则在指针的变换中可能会使链表断掉
代码
Java 版
1 | public ListNode reverseList(ListNode head) { |
Python 版
1 | def reverseList(head): |
Python 的代码中cur.next, prev, cur = prev, cur, cur.next
使用了多重赋值的语法,关于多重赋值原理的解释,看这里:https://blog.csdn.net/scfor333/article/details/104316694