其他分享
首页 > 其他分享> > 翻转链表

翻转链表

作者:互联网

/**
 * 内容描述:翻转链表,针对的是原来链表进行翻转。
 * 创建人:yang.liu
 * 创建时间:2019/7/4 13:29
 * 版本:1.0
 */
public class ReverseList {

    public static Node reverse(Node head) {
        // 空节点 或 只有一个节点,直接返回
        if (null == head || null == head.next) {
            return head;
        }

        // p head n,
        // 在链表长度大于1时,第一步的情况是:p(previous)表示第一个节点,head表示第二个节点,n(next)表示第三个节点
        // while循环操作是:head的next指向第一个节点(也就是p),
        // 之后p、head、n分别向前移动一节。
        // while之后是处理n到结尾时的情况。
        Node p = head;
        Node tmpHead = head.next;
        Node n = tmpHead.next;

        while (null != n) {
            tmpHead.next = p;
            p = tmpHead;
            tmpHead = n;
            n = n.next;
        }

        tmpHead.next = p;
        head.next = null;

        return tmpHead;
    }

    public static void printNodeList(Node head) {
        while (null != head) {
            System.out.print(head.value + " - ");
            head = head.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        Node n1 = new Node(1);
        Node n2 = new Node(2);
        /* Node n3 = new Node(3);
        Node n4 = new Node(4);
        Node n5 = new Node(5);*/

        n1.next = n2;
        /*n2.next = n3;
        n3.next = n4;
        n4.next = n5;*/

        printNodeList(n1);
        Node reverse = reverse(n1);
        printNodeList(reverse);
    }
}

/**
 * 欢迎评论、留言、发表看法。谢谢!
 */

标签:Node,head,next,链表,new,tmpHead,null,翻转
来源: https://www.cnblogs.com/mengHeJiuQIan/p/11132318.html