1.题目描述
输入一个链表,反转链表后,输出链表的所有元素。
2.code(java1.7版本)
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null){
return null;
}
ListNode start,temp,end;
start=null;
temp=head;
end=temp.next;
while(temp!=null){
temp.next=start;
start=temp;
temp=end;
if(temp==null){
end=null;
}
else{
end=end.next;
}
}
return start;
}
}
3.思路分析
运用3个ListNode类型的数据,start、temp以及end。start用于保存当前节点之前的一个节点,temp用于保存当前节点,end用于保存当前节点之后的一个节点。每次循环用于判断当前节点是否为空,不是,则将当前节点的下一个节点赋值为上一个节点,并将3个节点往后面移动,start节点赋值为temp节点,temp节点赋值为end节点,end节点赋值为再下一个节点,这样循环到temp为null时结束循环,返回头节点start即可完成链表的反转。