剑指offer——反转链表 Java版

    xiaoxiao2021-03-25  119

    public class Test16_ReverseList { public static void main(String[] args) { //创建链表 Node head = new Node(0); System.out.println(head.value); Node[] p = new Node[5]; int i = 0; for(i = 0; i<5; i++){ p[i] = new Node(i+1); System.out.println(p[i].value); if(i >= 1){ p[i-1].next = p[i]; }else{ head.next = p[i]; } } Node reverseHeadNode = reverseList(head); //输出翻转链表 while(reverseHeadNode != null){ System.out.println(reverseHeadNode.value); reverseHeadNode = reverseHeadNode.next; } } private static Node reverseList(Node head) { if(head == null){ return null; } /*//只有一个节点 已包含在下面情况 if(head.next == null){ return head; }*/ Node reverseHead = null; Node preNode = null; Node pNode = head; while(null != pNode){ //注意此处不能使用pNode.next 否则reverseHead始终为空 产生空指针异常。 Node nextNode = pNode.next; if(nextNode == null){ reverseHead = pNode; } //将前继节点赋给当前节点的下一个 pNode.next = preNode; //将当前节点作为前继节点 将后继节点作为当前节点 为下一个循环做准备 preNode = pNode; pNode = nextNode; } System.out.println(reverseHead.value); return reverseHead; } }
    转载请注明原文地址: https://ju.6miu.com/read-19561.html

    最新回复(0)