Créer un nouveau nœud pour une liste Chaînée unique en Java


J'apprends toujours Java et je travaille actuellement sur des problèmes de craquage de l'interview de codage, et l'un des problèmes du chapitre 2 (LinkedList) demande de supprimer les doublons d'une liste chaînée non triée. J'ai trouvé un tas de réponses/solution sur GitHub, mais je voudrais créer mon propre nœud et écrire ma propre version.

Ce que j'ai implémenté jusqu'à présent, c'est que j'ai créé Node class et écrit la fonction / méthode qui peut supprimer les doublons de la LinkedList non triée, mais quand j'essaie de le tester, j'ai essayé de créer la LinkedList dans la fonction principale, mais je n'ai toujours aucune idée de la façon de le comprendre. Quelqu'un peut-il m'aider/me guider comment créer une liste de liens unique? Fondamentalement, je crée quatre nœuds (quatrième,troisième,deuxième,tête) et les connecte tous à l'aide de la classe Node.

Merci d'avance,

public class Node {
    int data;
    Node next;

    public Node(int data, Node next){
        this.data = data;
        this.next = next;
    }

    public String toString(){
        return data + "";
    }
}


public class problem1 {

    public void Remove_duplicates(Node head){
        if(head == null){
            return;
        }

        Node current = head;
        while(current != null){
            Node runner = current;
            while(runner.next != null){
                if(runner.next.data == current.data){
                    runner.next = runner.next.next;
                }
                else {
                    runner = runner.next;
                }
            }
            current = current.next;
        }
    }

    public static void main(String[] args) {

        Node fourth = new Node(5,null);
        Node third = new Node(3,fourth);
        Node second = new Node(4,third);
        Node head = new Node(3,second);
        for(Node a: head){
            // ERROR: saying can only iterate over an array (or) java.lang.Iterable
            System.out.println(a.toString());
            a = a.next;
        }
    }
}
Author: Steve, 2016-08-15

1 answers

Essayez un autre type de boucle par exemple while

Node head = new Node(3, second);
Node node = head;
while (node.next != null) {
    System.out.println(node.toString());
    node = node.next;
}

Comme il l'explique, il ne sait pas comment itérer sur vos nœuds. Une autre approche pour utiliser le foreach serait de créer une propre classe qui implémente l'interface Iterable et contient votre logique LinkedList.

Pour la deuxième approche, je vous suggère de lire ce qui suit: Comment puis-je implémenter l'interface Itérable?

 3
Author: Kevin Wallis, 2017-05-23 12:08:35