反转链表

@Test
    public void reserveLinkedListTest(){
        Node head=new Node();
        Node cur=head;
        for (int i = 1; i < 5; i++) {
            Node node=new Node();
            node.value=i;
            cur.next=node;
            cur=node;
        }
        reserveLinkedList0(head);
    }


//新建链表,遍历旧链表的同时对新链表进行头部数据增加
    public void reserveLinkedList(Node head){
        if(head==null){
             return;
        }
        Node newHead=new Node();
        newHead.next=head;
        Node current=head.next;
        head.next=null;//这一步很重要
        while (current!=null){
            Node tmp=current.next;
            current.next=newHead.next;
            newHead.next=current;
            current=tmp;
        }
        newHead=newHead.next;
        while(newHead!=null){
            System.out.println(newHead.value);
            newHead=newHead.next;
        }
    }


    public void reserveLinkedList0(Node head){
      if(head==null){
             return;
        }
       Node p1=head;//代表反转后的链表头部
       Node p2=head.next;//代表下一个需要发转的链表节点
       p1.next=null;//这一步很重要
       while (p2!=null){
           Node tmp=p2.next;
           p2.next=p1;
           p1=p2;
           p2=tmp;
       }
        while(p1!=null){
            System.out.println(p1.value);
            p1=p1.next;
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容