单向链表逆转

面试遇到一个单向链表逆转的问题,回来后,亲自写了一遍。


public class ReverseList {

    public static void main(String[] args) {

        Node head = add(null"a");

        add(head"b");

        add(head"c");

        add(head"d");

        add(head"e");

        print(head);

        head = reverse(head);

        print(head);

     }


//核心方法

public static Node reverse(Node head) {

    if (head == null) {

    return null;

    }

    Node next = head.next;//下一个结点

    head.next = null// 这个必须的,否则链表就成有环的了。

    while (next != null) {

        Node temp = next.next;

        next.next = head;

        head = next;

        next = temp;

    }

        return head;

}

// 添加数据

public static Node add(Node head, String data) {

    if (head == null) {

        return new Node(data);

    } else {

        while (head.next != null) {

            head = head.next;

        }

        head.next = new Node(data);

        return head;

    }

}

// 打印数据

public static void print(Node head) {

    if (head == null) {

        System.out.println("null");

    } else {

        while (head != null) {

            System.out.print(head.data + "\t");

            head = head.next;

        }

        System.out.print("\n");

    }

}

}

 

class Node {

    String data;

    Node next;

 

    public Node(String data2) {

        this.data = data2;

    }

 

    public String toString() {

        return data;

    };

}

 打印结果:

单向链表逆转_第1张图片



你可能感兴趣的:(单向链表逆转)