您的位置:首页 > Web前端

【剑指offer——JAVA实现】反转链表(含思路解答示意图)

2018-04-08 09:37 519 查看
【考点:代码的鲁棒性】反转链表题目描述
输入一个链表,反转链表后,输出链表的所有元素。解题思路

 三个指针,pre、head和next,每次让【head指向的节点】指向【pre指向的节点】,然后遍历,即可完成。解题代码/*
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 pre = null;
ListNode next = head.next;

while(head != null) {
//反转当前节点的指向
head.next = pre;
//移动指针
pre = head;
head = next;
//保存下一个遍历节点
if(head != null)
next = head.next;
}
return pre;
}
}当然,为了看起来优雅一点,上面的代码可以稍微调整一下public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null) return null;

ListNode pre = null;
ListNode next = null;

while(head != null) {
//反转当前节点的指向
next = head.next;
head.next = pre;
//移动指针
pre = head;
head = next;
}
return pre;
}
}更多算法解答请点击《剑指offer》66题JAVA代码算法实现全集
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: