Java структура данных (intList) - PullRequest
0 голосов
/ 17 января 2020

Проблемы, с которыми я столкнулся, это функции dcatenate_recursion () и catenate (), я проверяю вывод из визуализатора java, вывод правильный, но IDEA выдает неправильный вывод, пожалуйста, помогите. Мой вывод 3 -> 2 -> 1 -> 6 -> 5 -> 4 -> 6 -> 5 -> 4, но требуется 3 -> 2 -> 1 -> 6 -> 5 -> 4

public class List {
    private int first;
    private List next;
    private int size=0;

    public List(int first, List next){
        this.first=first;
        this.next=next;
    }


    int get(int i){
        if(i==0){
            return first;
        }
        return next.get(i-1);
    }

    private int size(){
        List p= this;
        while(p!=null){
            size++;
            p=p.next;
        }
        return size;
    }
    public String toString(){
        List p= this;
        String list="";
        while(p.next!=null){
            list+=p.first+" -> ";
            p=p.next;
        }
        list+=p.first;
        return list;
    }


    //Not sure, output is correct in java visualizer?‍
    public static List dcatenate_recursion(List A,List B){
        if(A==null&&B!=null){
            return new List(B.first,dcatenate_recursion(A,B.next));
        }
        if(A==null&&B==null){
            return null;
        }
        return new List(A.first,dcatenate_recursion(A.next,B));
    }

    //Not sure, output is correct in java visualizer?‍
    public static List catenate(List A, List B){
        List p= new List(A.first,null);
        List q=p;
        while(A.next!=null){
            A=A.next;
            p.next=new List(A.first,null);
            p=p.next;
        }
        p.next=new List(B.first,null);
        p=p.next;
        while(B.next!=null){
            B=B.next;
            p.next=new List(B.first,null);
            p=p.next;
        }
        return q;
    }



    public static void main(String[] args){
        //Constructing a list with order of 3->2->1
        List link= new List(1,null);
        link= new List(2,link);
        link= new List(3,link);
        List link1= new List(4,null);
        link1= new List(5,link1);
        link1= new List(6,link1);
        System.out.println(dcatenate_iteration(link,link1));
        System.out.println(dcatenate_recursion(link,link1));
        System.out.println(catenate(link,link1));

    }
...