2016-10-21 3 views
0

J'ai un peu de mal avec une petite activité java qui traite de la recherche et de la suppression d'une liste liée.Comment rechercher et supprimer dans une liste liée

Voici les problèmes:

  • ajouter un menu au menu principal de méthode pour gérer l'ajout à la tête, la suppression de la tête et l'affichage d'un énumérés avec couplage.
  • Ajoutez ensuite une sélection de menu pour supprimer un élément particulier de la liste et le supprimer (demandez à l'utilisateur de supprimer une chaîne, puis trouvez-la dans la liste chaînée et supprimez cet élément de la liste).

Voici les classes:

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

Quel problème rencontrez-vous? –

+0

Qu'avez-vous essayé? Nous ne sommes pas ici pour faire votre exercice;) –

+1

Quel est le problème exact? Votre code semble correct, sauf que les méthodes 'deleteAtHead' et' addAtHead' pourraient bénéficier d'une vérification nulle. Je suppose que ce code est un devoir, puisque java a un 'LinkedList' intégré. –

Répondre

0
  1. Pour créer un menu, je vous recommande d'utiliser une boucle while. Vous voulez utiliser une sorte de scanner qui vérifie une entrée valide et vérifie l'entrée du menu.

{

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"); 
    } 
} 

C'est une méthode contient. Cela devrait vous donner une forte indication sur la façon de trouver un élément dans la liste liée et comment le supprimer. (Je vous laisse ceci, car c'est relativement facile et vous devez apprendre).

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

Autres remarques: les constructeurs par défaut qui définissent les valeurs auxquelles vous auriez accès en tant que null sont mauvais. Définissez le champ de données sur "" (chaîne vide). Dans ce cas, vous pouvez argumenter "bien que la classe Node est privée l'utilisateur ne peut pas y accéder" alors pourquoi auriez-vous un constructeur par défaut? Modifiez le constructeur par défaut ou supprimez-le. (C'est juste une mauvaise pratique) – Jjoseph