Maison > développement back-end > Golang > Comment supprimer des éléments de liste chaînée à l'aide du langage Go

Comment supprimer des éléments de liste chaînée à l'aide du langage Go

PHPz
Libérer: 2023-04-10 14:41:42
original
715 Les gens l'ont consulté

En langage Go, la suppression d'éléments de liste chaînée est une opération de base. La structure d'une liste chaînée ne peut pas être directement manipulée via l'indexation comme un tableau, vous devez donc rechercher l'élément qui doit être supprimé dans la liste chaînée, puis le supprimer de la liste chaînée.

Cet article présentera les opérations de base pour supprimer des éléments de liste chaînée à l'aide du langage Go.

  1. Définir la structure des listes chaînées

En langage Go, les listes chaînées peuvent être implémentées via une série de structures et de pointeurs. Nous utilisons généralement une structure de nœuds pour représenter un seul élément dans une liste chaînée.

type ListNode struct {

Val  int
Next *ListNode
Copier après la connexion
Copier après la connexion

}

Cette structure contient deux variables membres : Val et Next. Val est la valeur réelle du nœud et Next est le pointeur vers le nœud suivant.

  1. Suppression d'éléments dans une liste chaînée

La suppression d'éléments dans une liste chaînée peut être divisée en trois étapes. Tout d’abord, nous devons trouver l’élément qui doit être supprimé. Deuxièmement, nous devons mettre à jour le pointeur vers cet élément pour pointer vers l’élément suivant. Enfin, nous supprimons l'élément qui doit être supprimé de la liste chaînée.

func deleteNode(head ListNode, val int) ListNode {

// 如果是删除头节点,直接返回下一个节点作为新的头节点
if head.Val == val {
    return head.Next
}

// 定义两个指针用于遍历链表
pre, cur := head, head.Next
for cur != nil {
    if cur.Val == val {
        // 删除当前节点
        pre.Next = cur.Next
        break
    }
    // 将指针移动到下一个节点
    pre, cur = cur, cur.Next
}

return head
Copier après la connexion
Copier après la connexion

}

Dans cette fonction, nous utilisons deux pointeurs pre et cur pour parcourir la liste chaînée. Si un nœud qui doit être supprimé est trouvé, le pointeur vers ce nœud est mis à jour pour pointer vers le nœud suivant.

  1. Exemple de code complet

Ce qui suit est un exemple de code complet, qui comprend la structure qui définit la liste chaînée et la fonction pour supprimer les éléments de la liste chaînée.

func Deletenode (Head ListNode, Val int) ListNode {

// 如果是删除头节点,直接返回下一个节点作为新的头节点
if head.Val == val {
    return head.Next
}

// 定义两个指针用于遍历链表
pre, cur := head, head.Next
for cur != nil {
    if cur.Val == val {
        // 删除当前节点
        pre.Next = cur.Next
        break
    }
    // 将指针移动到下一个节点
    pre, cur = cur, cur.Next
}

return head
Copier après la connexion
Copier après la connexion

}

type ListNode struct {

Val  int
Next *ListNode
Copier après la connexion
Copier après la connexion

}

func main () {

rreee

}


  1. dans l'exemple ci-dessus, nous avons créé un liste chaînée contenant 5 éléments. Ensuite, nous utilisons la fonction deleteNode() pour supprimer l'élément de valeur 3 de la liste chaînée. Enfin, nous parcourons toute la liste chaînée et imprimons la valeur de chaque élément.
🎜Résumé🎜Grâce à l'explication ci-dessus, nous pouvons constater que les listes chaînées peuvent être implémentées en langage Go à travers une série de structures et de pointeurs. L'opération de base de suppression d'éléments de liste chaînée peut être divisée en trois étapes : recherche, mise à jour du pointeur et suppression. J'espère que cet article pourra vous aider à comprendre et à maîtriser les opérations de liste chaînée en langage Go. 🎜🎜

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal