输入一个链表,反转链表后,输出新链表的表头。
本题涉及到java传递问题以及递归代码如下
一 先定义一个链表 代码如下
class ListNode { int val; ListNode next; ListNode(int val) { this.val = val; } ListNode(ListNode next) { this.next = next; } public void setNext(ListNode next) { this.next = next; } public void setVal(int val) { this.val = val; } public ListNode getNext() { return next; } public int getVal() { return val; }二、核心代码
/** * * * @param head * @return */ public ListNode reversal(ListNode head) { if (null == head || null == head.next) { return head; } ListNode temp = head.next; ListNode newHead = reversal(temp); temp.next = head; head.next = null; return newHead; }三、测试代码
public static void main(String[] args) { ListNode head = new ListNode(0); ListNode listNode1 = new ListNode(1); ListNode listNode2 = new ListNode(2); ListNode listNode3 = new ListNode(3); ListNode listNode4 = new ListNode(4); ListNode listNode5 = new ListNode(5); head.setNext(listNode1); listNode1.setNext(listNode2); listNode2.setNext(listNode3); listNode3.setNext(listNode4); listNode4.setNext(listNode5); head = new ReversalListNode().reversal(head); while (null != head) { System.out.print(head.getVal() + " "); head = head.getNext(); } }