题目描述:
输入一个链表,反转链表后,输出链表的所有元素。
思路解析:
非递归方法:新建一个ListNode链表头节点pre,然后把原来的链表从前到后摘下来,此时需要一个next保存后边的节点。然后摘下来的head的下一个节点设置成pre,循环直到head为null。
递归方法:
找到链表的最后一个节点,作为头节点;设置其下一个节点为head;设置head的下一个节点为null;代码:
非递归方法:
public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class Solution { public ListNode ReverseList(ListNode head) { ListNode pre=null; if(head==null){ return null; } while(head!=null){ ListNode temp=head.next; head.next=pre; pre=head; head=temp; } return pre; } }递归方法:
public class Solution { public ListNode ReverseList(ListNode head) { if(head==null||head.next==null){ return head; } ListNode pre=ReverseList(head.next); head.next.next=head; head.next=null; return pre; } }