题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:
假设一个链表 A -> B ->C,则反转后为 C -> B -> A
new两个新节点,一个pre为反转链表的表头,另一个tmp遍历当前链表用
每当tmp指向新的节点时,执行以下操作:
- 将tmp指向的下一节点备份
- 改tmp指向pre
- pre = tmp
- tmp = 备份的下一节点
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode pre = null;
ListNode tmp = head;
if(head == null || head.next == null){
return head;
}else{
while(tmp != null){
ListNode next = tmp.next;
tmp.next = pre;
pre = tmp;
tmp = next;
}
return pre;
}
}
}