2016-06-30 3 views
0

Ниже мой код. Я пытаюсь реализовать Linked List.Below - мои 3 класса.Node.java LinkedList.java и Основной класс. Мой код получает hanged.I пытался отлаживать, но не найдя точной проблемы. Насколько я вижу, есть некоторая проблема в методе добавления. Пожалуйста, помогите.Не получать желаемый результат через Связанный список

package com.vikash.LinkedList; 

public class Node { 

    private Object data; 
    private Node next; 

    public Node(Object data) 
    { 
     this.data=data; 
    } 

    public Object getData() { 
     return data; 
    } 
    public void setData(Object data) { 
     this.data = data; 
    } 
    public Node getNext() { 
     return next; 
    } 
    public void setNext(Node next) { 
     this.next = next; 
    } 
} 


package com.vikash.LinkedList; 

public class LinkedList { 

    public Node head; 

    public void add(Object data) 
    { 
     Node temp=new Node(data); 

     if(head==null) 
     { 
      head=temp; 

     } 

     Node current=head; 

     while(current.getNext()!=null) 
     { 
      current=current.getNext(); 
     } 
     current.setNext(temp); 
    } 

    public void add(Object data,int index) 
    { 

    } 

    public int get(int index) 
    { 
     return 0; 
    } 

    public boolean remove(int index) 
    { 
     return false; 
    } 

    public void print() 
    { 
     Node current=head; 
     System.out.println(current.getData()); 
     while(current!=null) 
     { 
      System.out.print(current.getData()); 
      System.out.print("->"); 
      current=current.getNext(); 
     } 
     System.out.println("X"); 
    } 
} 

package com.vikash.LinkedList; 

public class LinkedListTest { 

    public static void main(String[] args) { 

     LinkedList linkedList=new LinkedList(); 
     linkedList.add(1); 
     linkedList.add(2); 
     linkedList.add(3); 
     linkedList.add(4); 

     linkedList.print(); 
    } 
} 
+2

Общий комментарий/предупреждение: класс коллекций Java имеет нечто уже называемое 'LinkedList', поэтому вы, вероятно, не должны указывать свой класс с тем же именем. –

+0

@TimBiegeleisen Спасибо, что указали его. Будете держать это в голове. Можете ли вы найти проблему. –

+0

Посмотрите на мой ответ. Я дал вам полную реализацию для вашего метода 'add()'. –

ответ

4

При добавлении первого узла, вы не должны выполнять остальную часть логики:

if(head==null) 
    { 
     head=temp; 
     return; // add this 
    } 

В настоящее время, при добавлении первого узла, вы добавляете один и тот же Node дважды, связывая его с сам, создавая таким образом бесконечный список:

1 -> 1 -> 1 -> ... 
+0

@TimBiegeleisen Такие как? – Eran

0

Вот реализация вашего метода com.vikash.LinkedList.add(). Я также заметил, что некоторые из ваших других методов либо не реализованы, либо могут иметь проблемы. Но так как ваши немедленные сбои, похоже, исходят из метода add(), мы надеемся, что это установит вас на правильном пути.

public void add(Object data) { 
    Node temp = new Node(data); 
    Node curr = head; 

    if (curr == null) { 
     // if the list be empty, assign the head 
     head = temp; 
    } 
    else { 
     // otherwise walk down the list until hitting the end 
     while (curr.getNext() != null) { 
      curr = curr.getNext(); 
     } 

     // and the insert the new node 
     curr.setNext(temp); 
    } 

    return; 
} 
Смежные вопросы