Maison  >  Article  >  développement back-end  >  Comment supprimer des nœuds de liste chaînée en langage Go

Comment supprimer des nœuds de liste chaînée en langage Go

王林
王林original
2021-01-06 13:45:283311parcourir

La méthode de suppression des nœuds de liste chaînée en langage Go : déplacez d'abord la valeur du nœud suivant vers le nœud actuellement supprimé ; puis modifiez le Next du nœud actuel, tel que [node.Next = node.Next ; .Suivant].

Comment supprimer des nœuds de liste chaînée en langage Go

L'environnement d'exploitation de cet article : système Windows10, GO 1.11.2, ordinateur Thinkpad T480.

Méthode spécifique :

Solution optimale :

Déplacez la valeur du nœud suivant vers le nœud actuellement supprimé, puis modifiez le Next

node.Val = node.Next.Val
node.Next = node.Next.Next

de le nœud actuel Autres méthodes :

p.next = p.next.next peut atteindre l'objectif de suppression

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(head *ListNode, val int) *ListNode {
    if head.Val == val{
        return head.Next
    }

    pre:=head   
    for head.Next.Val != val{
        head = head.Next
    }
    head.Next = head.Next.Next
    return pre
}

Question :

Supprimer un nœud dans une liste chaînée
Veuillez écrire une fonction afin qu'elle puisse supprimer un nœud donné (non final) dans une liste chaînée, vous ne recevrez que le nœud dont la suppression est demandée.

Il existe une liste chaînée existante – head = [4,5,1,9], qui peut être exprimée comme suit :

Comment supprimer des nœuds de liste chaînée en langage Go

Exemple 1 :

Entrée : head = [4,5,1,9], node = 5
Sortie : [4,1,9]
Explication : Étant donné le deuxième nœud de valeur 5 dans votre liste chaînée , Ensuite, après avoir appelé votre fonction, la liste chaînée devrait devenir 4 -> 1 -> 9.
Exemple 2 :

Entrée : head = [4,5,1,9], node = 1
Sortie : [4,5,9]
Explication : étant donné le troisième nœud avec une valeur de 1 dans votre liste chaînée, alors après avoir appelé votre fonction, la liste chaînée devrait devenir 4 -> ; 9.

Code

Faites toujours attention pour atteindre l'objectif de suppression

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(node *ListNode) {
	for node.Next.Next != nil {
		node.Val = node.Next.Val
		node = node.Next
	}
	node.Val = node.Next.Val
	node.Next = nil
}

Recommandations associées :Tutoriel Golang

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn