给你一个链表,需要你将链表进行反转
比如:
1->2->3->4->5
5->4->3->2->1
方法一:迭代
问题分析
首先分析这个题目,我们要怎么做?一起来看下面的图片的解析!
所以说,我们只需要首先将第一个节点的next单独拿出来用一个单独的数据去存储然后第一个节点的值也单独拿出来去存储,然后再将指针反过来就可以了!
代码展示
public static ListNode iterate(ListNode head){
ListNode prev=null, next;
ListNode curr=head;
while(curr!=null){
next=curr.next;
curr.next=prev;
prev=curr;
curr=next;
}
return null;
}
方法二:递归
问题分析
还是和上面一样,但是在这里我们使用另外一种方法来进行,那就是递归
递归就是一层一层的解决,我们要怎么做?
我们使用
head.next.next=head;
head.next=null;
来进行
然后我们需要从最后的开始一直往前!因为如果从前面开始可能就会出现前面的找完了但是找不到后面的情况!
代码展示
public static ListNode iterate(ListNode head){
if(head==null||head.next=null)
{
return head;
}
iterate(head.next);
head.next.next=head;
head.next=null;
}
以上就是所有的结果了!