• java实现链表的反转


    摘要

    最近笔试一家公司,其中一道题目:如何用java实现链表的反转,如:{a,b,c,d}反转后变为:{d,c,b,a},只能操作一个链表。 当时不晓得怎么做。还以为使用栈来实现。图样图森破。
    public class Node 
    
    {
    
    
        private Node next;
        private String value;
        
        public Node(String value){
            this.value=value;
        }
        public Node getNext() {
            return next;
        }
        public void setNext(Node next) {
            this.next = next;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
        
        public static void main(String[] args) 
        {
            Node head=new Node("a");
            Node node1=new Node("b");
            Node node2=new Node("c");
            Node node3=new Node("d");
            //初始化链表
            head.setNext(node1);
            node1.setNext(node2);
            node2.setNext(node3);
            System.out.println("打印链表反转前:");
    
    
            reverse(head);
            //设置head的下一个元素为null,注意:此时head已经成为链表尾部元素。
            head.next=null;
            while(node3!=null){
                System.out.print(node3.getValue());
                node3=node3.getNext();
                if(node3!=null){
                    System.out.print("->");
                }
            }
        }
        
        /**
         * 利用迭代循环到链表最后一个元素,然后利用nextNode.setNext(head)把最后一个元素变为
         * 第一个元素。
         * 
         * @param head
         */
        public static void reverse(Node head){
            if(head!=null){
                Node nextNode=head.getNext();
                if(nextNode!=null){
                    reverse(nextNode);
                    nextNode.setNext(head);
                }
            }
            
        }
    }
  • 相关阅读:
    第二阶段冲刺第三天
    第二阶段冲刺第二天
    第二阶段冲刺第一天
    软件工程概论第十四周学习进度
    软件工程概论第十三周学习进度
    软件工程概论第十二周学习进度
    搜狗输入法
    冲刺第十天
    第二阶段冲刺第七天
    第二阶段冲刺第六天
  • 原文地址:https://www.cnblogs.com/hd92/p/13554204.html
Copyright © 2020-2023  润新知