Maison  >  Article  >  Java  >  Java implémente l'opération de suppression d'éléments d'une liste chaînée

Java implémente l'opération de suppression d'éléments d'une liste chaînée

王林
王林avant
2021-01-04 11:54:231746parcourir

Java implémente l'opération de suppression d'éléments d'une liste chaînée

Objectif : supprimer les éléments de liste chaînée

(Partage de vidéos d'apprentissage : vidéo d'enseignement Java)

Introduction au problème :

Supprimez tous les nœuds de la liste chaînée qui sont égaux à la valeur donnée * "val*".

Exemple de description :

示例:
 
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

Idées de solutions au problème :

L'une est basée sur la méthode du nœud sentinelle, l'autre est basée sur la méthode de collecte Java, qui est essentiellement la même

Mise en œuvre du programme :

 import java.util.*;
 
public class RemoveElementsTest3 {
    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode l2 = new ListNode(2);
        ListNode l3 = new ListNode(6);
        ListNode l4 = new ListNode(3);
        ListNode l5 = new ListNode(4);
        ListNode l6 = new ListNode(5);
        ListNode l7 = new ListNode(6);
        l1.next = l2;
        l2.next = l3;
        l3.next = l4;
        l4.next = l5;
        l5.next = l6;
        l6.next = l7;
        ListNode listNode = removeElements2(l1, 6);
        System.out.println("listNode = " + listNode);
 
    }
 
    public static ListNode removeElements(ListNode head, int val) {
        ListNode dummyNode = new ListNode(0);
        ListNode currentNode = dummyNode;
        while (head != null) {
            if (head.val != val) {
                currentNode.next = head;
                currentNode = currentNode.next;
            }
            head = head.next;
        }
        currentNode.next = null;
        return dummyNode.next;
    }
 
    public static ListNode removeElements2(ListNode head, int val) {
        List<Integer> list = new LinkedList<>();
        while (head != null) {
            list.add(head.val);
            head = head.next;
        }
        List<Integer> tempList = new ArrayList<>();
        tempList.add(val);
        list.removeAll(tempList);
        ListNode dummyNode = new ListNode(0);
        ListNode tempNode = dummyNode;
        for (int i = 0, size = list.size(); i < size; i++) {
            ListNode listNode = new ListNode(list.get(i));
            tempNode.next = listNode;
            tempNode = tempNode.next;
        }
        return dummyNode.next;
    }
}

Résumé :

En fait, après avoir écrit ceci, je pense que c'est facile à comprendre si vous regardez la logique de mise en œuvre de l'ensemble du programme. Il n'y a rien de mal à cela. Les points difficiles doivent être déduits. Si vous ne comprenez pas, vous pouvez déboguer le programme donné plusieurs fois. Le contenu affiché à chaque fois n'est affiché qu'après son exécution réussie.

Recommandations associées : Tutoriel d'introduction à Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer