2016-10-21 15 views
0

リンクされたリストの検索と削除を扱う小さなJavaアクティビティで少し問題があります。リンクされたリストの検索と削除の方法

  • 、頭部への追加ヘッドから削除し、リンクされ記載されているの表示処理するための方法をメインにメニューを追加します。ここでは

    が問題となっています。

  • 次に、リスト内の特定の要素を削除して削除するためのメニュー選択を追加します(削除する文字列をユーザーに求めてから、リンクされたリストでその要素を見つけ、その要素をリストから削除します)。ここで

クラスは次のとおりです。私は、whileループを使用することをお勧めしますメニューを作成するための

public class LLNode { 

    private String data; 
    private LLNode next; 

    public LLNode() { 
     this.data = null; 
     this.next = null; 
    } 
    public LLNode (String newData) { 
     this.data = (newData); 
     this.next = null; 
    } 
    public void updateNode (LLNode nextOne) { 
     this.next = nextOne; 
    } 
    public String toString() { 
     return this.data; 
    } 
    public LLNode getNext() { 
     return this.next; 
    } 
} 


public class LList { 

    private LLNode head; 

    public LList() { 
     head = null; 
    } 
    public void addAtHead (String newData) { 
     LLNode newNode = new LLNode (newData); 
     newNode.updateNode(head); 
     head = newNode; 
    } 

    public void display() { 
     LLNode temp = head; 
     while (temp != null) { 
      System.out.println (temp); 
      temp = temp.getNext(); 
     } 
    } 

    public LLNode deleteAtHead () { 
     LLNode removedOne = head; 
     head = head.getNext(); 
     return removedOne; 
    } 

} 

public class LinkedListExample { 

    public static void main(String[] args) { 
     LList list = new LList(); 

     list.addAtHead("Bob"); 
     list.addAtHead("Tom"); 
     System.out.println("The list is "); 
     list.display(); 

     LLNode removedOne = list.deleteAtHead(); 
     System.out.println("After delete, the list new is "); 
     list.display(); 
     System.out.println("The one that was deleted is..." + removedOne); 


    } 

} 
+1

あなたはどのような問題を抱えていますか? –

+0

何を試しましたか?私たちはあなたの運動をするためにここにいません;) –

+1

正確な問題は何ですか?あなたのコードは大丈夫ですが、 'deleteAtHead'と' addAtHead'メソッドはヌルチェックの恩恵を受けることができます。 javaは組み込みの 'LinkedList'を持っているので、私はこのコードが宿題であると仮定します。 –

答えて

0
  1. 。有効な入力をチェックし、メニューの入力をチェックする何らかの種類のスキャナを使用したいとします。

{

public void main(String[] args) { 
string input; 

Scanner n = new Scanner(System.in); 
while (!(input.equals("exit")) { 

System.out.println("menu item 1"); 
System.out.println("menu item 2"); 
System.out.println("etc"); 

input = n.nextLine(); 
switch (input) { 
case "menu 1": //do whatever menu 1 is 
case "menu 2": //do whatever menu 2 is 
case "exit": //exit // save whatever 
default: System.out.println("message not understood"); 
    } 
} 

これは方法を含んでいます。これはあなたにリンクされたリストの要素を見つける方法とそれを削除する方法に関する強い示唆を与えるはずです。 (私はあなたにこれを残します、これは比較的簡単で、あなたは学ぶ必要があるので)。

public boolean contains(String str) { 
Node ref; 
while (ref != null) 
    ref = ref.next; 
    if (ref.data == str) { 
    return true; 
    } 
return false; 
} 
+0

その他の注意事項:あなたがnullとしてアクセスする値を設定するデフォルトのコンストラクタは悪いです。データフィールドを ""(空の文字列)に設定します。この場合、「よくNodeクラスが非公開だからユーザーがアクセスできない」と主張することができます。なぜ、あなたはデフォルトのコンストラクタを持っていますか?デフォルトのコンストラクタを変更するか、削除してください。 (その悪い習慣) – Jjoseph

関連する問題