版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Allen202/article/details/85694505
要求很简单,输入一个链表,反转链表后,输出新链表的表头。使用递归实现
package com.lyh.seckill.test;
public class ReLinkedList {
private static class Node{
private int val;
private Node next;
public Node(int val){
this.val = val;
}
public void printNode(Node node){
System.out.print(node.val+"->");
if(node.next != null){
printNode(node.next);
}
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
public static Node reverseList(Node node){
if(node == null || node.getNext() == null){
return node;
}
//链表最后
Node prev = reverseList(node.getNext());
node.getNext().setNext(node);
node.setNext(null);
return prev;
}
public static void main(String[] args) {
Node a = new Node(1);
Node b = new Node(2);
Node c = new Node(3);
Node d = new Node(4);
Node e = new Node(5);
Node f = new Node(6);
Node g = new Node(7);
Node h = new Node(8);
a.next = b;
b.next = c;
c.next = d;
d.next = e;
e.next = f;
f.next = g;
g.next = h;
a.printNode(a);
Node es = reverseList(a);
System.out.println();
a.printNode(es);
}
}
打印结果
1->2->3->4->5->6->7->8->
8->7->6->5->4->3->2->1->