public class Test {
public static void main(String[] args) {
Node head = new Node(0);
Node temp = head;
for (int i = 1; i < 10; i++) {
temp.setNext(new Node(i));
temp = temp.next();
}
printList(head);
printList(reverseList1(head));
printList(reverseList2(head));
}
// 普通遍历法
static Node reverseList1(Node head) {
Node pointer = head;
Node nextNode;
Node prevNode = null;
while (pointer != null) {
nextNode = pointer.next();
pointer.setNext(prevNode);
prevNode = pointer;
pointer = nextNode;
}
return prevNode;
}
// 递归
static Node reverseList2(Node head) {
if (head == null || head.next() == null) {
return head;
}
Node newHead = reverseList2(head.next());
head.next().setNext(head);
head.setNext(null);
return newHead;
}
// 打印链表
static void printList(Node head) {
Node temp2 = head;
while (temp2 != null) {
System.out.print(temp2.getData() + " ");
temp2 = temp2.next();
}
System.out.println();
}
}
class Node {
private int data;
private Node next;
Node(int data) {
this.data = data;
}
void setNext(Node next) {
this.next = next;
}
int getData() {
return data;
}
Node next() {
return next;
}
}
反转单链表 递归法 和 普通方法
猜你喜欢
转载自blog.csdn.net/qq_33709508/article/details/103791568
今日推荐
周排行