


Programme Javascript pour supprimer les doublons de la liste chaînée triée
La liste chaînée est une structure de données linéaire On nous donne une liste chaînée triée composée d'entiers. Certains numéros peuvent être répétés ou répétés et nous devons les supprimer. Étant donné que la liste chaînée donnée est triée, nous pouvons simplement la parcourir et en utilisant une boucle while, nous pouvons en supprimer les nœuds en double. Nous mettrons en œuvre un code approprié en discutant de la complexité temporelle et spatiale pour mieux comprendre la logique.
Exemple
Given linked list is: 1-> 2 -> 2 -> 3 -> 4 -> 4 -> 4 -> 5 -> 5 -> 5-> 6-> null Output: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null
Explication - La liste chaînée donnée est triée, ce qui facilite la recherche des éléments en double et nous pouvons les supprimer en les sautant s'ils sont égaux à la valeur précédente.
Voyons comment fonctionne le code
Méthode
Nous suivrons les étapes ci-dessous pour résoudre le problème -
Tout d'abord, nous allons créer une classe pour fournir une structure aux nœuds de la liste chaînée.
Deuxièmement, nous créerons des fonctions qui imprimeront la liste chaînée et ajouteront de nouveaux nœuds à la liste chaînée existante.
Nous allons créer une fonction pour transmettre l'en-tête de la liste chaînée dont nous souhaitons supprimer les éléments en double et elle renverra l'en-tête de la nouvelle liste chaînée.
Dans un premier temps, nous vérifierons si la liste chaînée est vide ou si sa taille est égale à 1. Dans ces cas nous rendons la tête telle quelle.
Nous allons créer deux variables, une indiquant la tête et l'autre indiquant le prochain nœud de la tête.
Si les valeurs du nœud actuel et du nœud suivant sont égales, alors nous déplacerons le nœud suivant vers le nœud suivant et mettrons à jour l'adresse du nœud suivant du nœud actuel.
Sinon, on passe au nœud suivant et on déplace le nœud suivant vers son nœud suivant.
Enfin, nous retournerons l'en-tête et imprimerons la valeur présente dedans.
Exemple
Laissons-nous implémenter les étapes indiquées dans le code pour une meilleure compréhension
// class to provide structure to linked list node class Node{ constructor(val){ this.value = val this.next = null } } // function to print the linked list function print(head){ var temp = head; if(head == null){ console.log("The given linked list is empty"); } else { var ans = "" while(temp.next != null){ ans += temp.value; ans += " -> " temp = temp.next } ans += temp.value ans += " -> null" } console.log(ans) } // function to add data in linked list function add(data, head, tail){ var new_node = new Node(data); if(head == null){ head = new_node return new_node } else { tail.next = new_node; return new_node } } // function to remove the duplicate numbers function removeDupli(head){ // if linked list is empty if(head == null){ return head; } // if linked list is of size one if(head.next == null){ return head; } var temp = head var next = head.next while(next != null){ if(temp.value == next.value){ next = next.next; temp.next = next; } else { next = next.next; temp = temp.next; } } return head; } // defining linked list var head = new Node(1) var tail = head tail = add(2,head, tail) tail = add(2,head, tail) tail = add(3,head, tail) tail = add(4,head, tail) tail = add(4,head, tail) tail = add(4,head, tail) tail = add(5,head, tail) tail = add(5,head, tail) tail = add(5,head, tail) tail = add(6,head, tail) console.log("The given linked list is: ") print(head) // calling function to remove duplicate elements head = removeDupli(head) console.log("The Linked list after removal of duplicate integers is: ") print(head)
Complexité temporelle et spatiale
La complexité temporelle du code ci-dessus est O(N), où N est le nombre total de nœuds dans la liste chaînée donnée. La complexité temporelle est linéaire car nous ne parcourons la liste chaînée qu'une seule fois.
La complexité spatiale du code ci-dessus est O(1) car nous n'utilisons aucun espace supplémentaire.
Conclusion
Dans ce tutoriel, nous avons implémenté un programme JavaScript pour supprimer les éléments en double d'une liste chaînée triée donnée. Étant donné que la liste chaînée est triée, tous les éléments en double sont adjacents les uns aux autres et peuvent être facilement supprimés en la parcourant. La complexité temporelle du programme que nous avons implémenté est O(N) et la complexité spatiale est O(1).
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...
