Macht eine Tiefe Kopie einer LinkedList in java

Ich habe eine verkettete Liste und ich bin versucht, zu erstellen eine Kopie von einer anderen Verlinkten Liste und diese Kopie wird eine Tiefe Kopie, da der element-Typ ist char. Aufgrund der Komplexität der verknüpften Listen, die ich ausprobiert habe nicht die add-Methode verwenden. Mein code ist unten dargestellt. Auch will ich rekursiv alle Elemente aus einer Liste zu meiner ursprünglichen Liste, aber das problem mit meiner Umsetzung ist, dass es fügt nur das erste element in der Liste und nicht alle. Warum ist das so?

public class CharLinkedList {

    private static class Node {
        private char info;
        private Node next;


        public Node(char d) {
            this.data = d;
            this.next = null;
        }
    }

    private int size;
    private Node head;


    public CharLinkedList() {
        this.size = 0;
        this.head = null;
    }


    public CharLinkedList(CharLinkedList some) {
        this.size = some.size;
        Node node = some.head;
        this.head = new Node(other.head.info);
        if(node.next != null)
        {
            this.head.next = new Node(node.next.info);
            node = node.next;
            this.head.next.next = new Node(node.next.info);
        }
    }

    public void addAll(CharLinkedList some) {
        if(some == null){
            return;
        }
        if (this.size == 0) {
            Node someNode = new Node(some.get(0));
            this.head = someNode;
        }
        else {
            CharLinkedList.addAll(some, this.head.next);
        }
        this.size++;
    }

    private static void addAll(CharLinkedList some, Node node) {
        if(node.next == null)
        {
            Node someNode = new Node(some.get(0));
            node.next = someNode;
        }
        else {
            CharLinkedList.addAll(some, node.next);
        }

    }



public static void main(String[] args) {
    CharLinkedList l = new CharLinkedList();
    l.add('z');
    l.add('o');
    l.add('m');

    CharLinkedList some = new CharLinkedList(l);
    some.add('b');
    some.add('i');
    some.add('e');
    System.out.println(l);
    System.out.println(some);
    //now i change the state of l and append all of some
    l.set(1,  'p');
    l.addAll(some);
    System.out.println(l);
Warum nutzen Sie nicht die LinkedList kommt das mit den JCF?
Also... hast du dir schon mal diese Arbeit? Es wäre höflich von Ihnen zu akzeptieren, eine Antwort.

InformationsquelleAutor user3479191 | 2014-03-31

Schreibe einen Kommentar