2013-11-13 4 views
0

Я пытаюсь написать метод класса для копирования существующего связанного списка без использования клона. моими данными в первоначальном списке являются:скопируйте связанный список ... без использования клона

3 8 -1 5 12 4 -3 7 0 10 3 6 9 -2 5 11 -6 -4 -2 -1 

проблема заключается в том, что им получен новый список с 20 узлами, полными -6. мой метод заключается в следующем:

public SortedLinkedList copy(){ 

    SortedLinkedList copy = new SortedLinkedList(); 

    Node ptr, nodeBefore; 

    copy.start = new Node(start.data,null); 
    ptr = start.next; 
    nodeBefore = copy.start; 

    while(ptr != null){ 
     nodeBefore.next = new Node(start.data, null); 
     nodeBefore = nodeBefore.next; 
     ptr = ptr.next; 
    } 
    return copy; 

} 

ответ

2

Поскольку это выглядит как домашнее задание, я просто дам вам подсказку. Проблема заключается в этом утверждении. Какие данные вы вводите в следующий узел?

nodeBefore.next = new Node(start.data, null); 
+1

D'oh. спасибо, это за Домашнее задание, и спасибо за подсказку. намного лучше, чем просто слепое копирование кода. его не start.data я хотел, его ptr.data. – StillLearningToCode

0

Это потому, что вы продолжаете создавать узлы с одинаковыми начальными данными.

Также передумайте имена переменных. Как насчет звонка nodeBeforeprevNode?

Еще один момент, который вы могли добавить, - это реализация вашего класса Node.

Смежные вопросы