定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解法:我们使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。
在遍历的时候,做当前结点的尾结点和前一个结点的替换。
python:
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head #从头结点开始
last = None
while head:
tmp = head.next #暂存后继节点
head.next = last #让后继节点指向上一个节点
last = head #令本轮循环的节点成为下一轮循环中的前节点
head = tmp #令下一轮的节点为本轮的后继节点(即向后指向一位)
return last # 这里得返回last,如果返回cur,最后cur已经指向空了
java:
public class Offer024 {
public ListNode reverseList(ListNode head) {
ListNode last = Null;
while (head != null){
ListNode tmp = head.next;
head.next = last;
last = head;
head = tmp;
}
return last
}
}
网友评论