2016-06-30 4 views
0

以下は私のコードです。リンクされたList.Belowを実装しようとしています3つのclasses.Node.java LinkedList.javaとMain class.Myコードがハングアップします。正確な問題を見つけることはできません。私が見る限り、addメソッド自体に問題があります。助けてください。リンクされたリストを介して希望の出力を取得していません

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; 
} 
関連する問題