题目描述
输入一个链表,反转链表后,输出新链表的表头。
考察点:如何调整指针以达到反转的效果。
思路:
初始化3个指针:
1.pre:已反转链表的最后一个节点,刚开始没有反转,所以是null。
2.cur:原始链表的第一个节点,刚开始就是head;
3.nex:原始链表的第二个节点,用来保留原始链表。刚开始是null,循环里要重新定义。
每次循环:
1.nex=cur.next;---先保留原始链表
2.cur.next=pre;---倒转指针去指向已反转链表的最后一个节点
3.pre=cur; cur=nex; 继续去操作下一个节点。
循环条件:cur !=null;
跳出循环时,pre就是反转完成的链表的首节点了,返回pre即可。
代码:
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode pre=null;
ListNode cur=head;
ListNode nex=null;
while(cur!=null){
nex=cur.next;
cur.next=pre;
pre=cur;
cur=nex;
}
return pre;
}
}
来源:oschina
链接:https://my.oschina.net/u/4527334/blog/4300063