题目描述
输入一个链表,反转链表后,输出新链表的表头。
主要是注意自定义ArrayList用法
import java.util.ArrayList;
public class Solution {
public ListNode ReverseList(ListNode head) {
ArrayList<ListNode> a = new ArrayList<ListNode>();
ListNode root = null;
while(head!=null)
{
a.add(head);
root = head;
head = head.next;
}
ListNode be = root;
for(int i=a.size()-2;i>=0;i--)
{
root.next = a.get(i);
root = a.get(i);
}
if(root!=null)
root.next = null;
return be;
}
}
也可以使用p,q,r三指针法
import java.util.ArrayList;
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null||head.next==null)
return head;
ListNode p,q,r;
p = head;
q = p.next;
r = null;
if(q!=null)
r = q.next;
p.next = null;
q.next = p;
while(r!=null)
{
p = q;
q = r;
r = q.next;
q.next = p;
}
return q;
}
}
链表反转算法
1090

被折叠的 条评论
为什么被折叠?



