一、题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
二、示例
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
代码实现
链表节点
public class ListNode {
int val;
ListNode next;
ListNode(){}
ListNode(int val){
this.val = val;
}
ListNode(int val, ListNode next){
this.val = val;
this.next = next;
}
}
遍历
/*
*利用前后指针,解决问题
*/
public ListNode reverseList(ListNode head) {
if(head == null) {
return head;
}
ListNode curr = head; //当前指针
ListNode preNode = null; //翻转的下一个节点
while(curr != null) {
ListNode next = curr.next; //保存下一个节点
curr.next = preNode; //将下一个节点指向前一个节点
preNode = curr;
curr = next;
}
return preNode;
}
时间和空间情况