题目描述:
代码如下:
迭代解决:
public class listNode {
public int val;
public listNode next;
public listNode(int val, listNode next) {
this.next = next;
this.val = val;
}
public static listNode reverseList1(listNode head){//迭代的方法解决单链表的反转
listNode prev=null,next;
listNode curr=head;//当前状态
while (curr!=null){
//让当前结点指向前一个结点
next=curr.next;
curr.next=prev;
prev=curr;
curr=next;
}
return prev;//返回反转后的头结点
}
递归解决:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode reverseList(ListNode head) { if(head==null||head.next==null){//结束递归的条件 return head; } ListNode last=reverseList(head.next);//脑袋不要跟着进入循环 last相当于一个已经处理好的链表 //接下来只需要处理head结点和last这一个链表之间的关系 head.next.next=head; head.next=null; return last; } }