Java循环链表的反转实现

2019-03-11  本文已影响0人  淡泞润清田

public class Node {

public Node(int data) {
    this.data = data;
}

public int data;
public Node next;

public static Node reverse(Node head) {
    Node prev = head;
    Node cur = head.next;
    Node next = null;
    Node temp = head.next;
    while (next != temp) {
        next = cur.next;
        cur.next = prev;
        prev = cur;
        cur = next;
        System.out.println("翻转:cur:" + cur.data);
    }
    return cur;
}

}

测试
import org.junit.Test;

public class NodeTest {
@Test
public void nodeReverseTest() throws Exception {

    Node head = new Node(0);
    Node node1 = new Node(1);
    Node node2 = new Node(2);
    Node node3 = new Node(3);
    Node node4 = new Node(4);
    head.next = node1;
    node1.next = node2;
    node2.next = node3;
    node3.next = node4;
    node4.next = head;
    Node cur = head;
    System.out.println(cur.data);
    while (cur.next != head) {
        cur = cur.next;
        System.out.println(cur.data);
    }
    Node.reverse(head);
    System.out.println("翻转后:");
    System.out.println(head.data);
    cur = head;
    while (cur.next != head) {
        cur = cur.next;
        System.out.println(cur.data);
    }
}

}

上一篇下一篇

猜你喜欢

热点阅读