输入一个链表,反转链表后,输出新链表的表头。
本题涉及到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();
}
}