【题目描述】输入一个链表,反转链表后,输出链表的所有元素。
【解题思路1】
//1. 只反转链表的值,并不是真正的把结点交换。
//2. 从第一个结点开始,找关于中间轴对称的结点,然后交换它们的值。
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null){
return head;
}
int temp = 0;
ListNode end = head, inx = head, flag = null;
while(inx.next != flag){
end = inx;
while(end.next != flag){
end = end.next;
}
temp = end.val;
end.val = inx.val;
inx.val = temp;
inx = inx.next;
flag = end;
}
return head;
}
}
【解题思路2】
//1. 反转结点。
//2. 从头结点开始,记录前一个结点pre,然后把当前结点的next指针指向pre。循环遍历,直到最后一个结点返回。
public ListNode ReverseList(ListNode head) {
ListNode pre = null;
ListNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}