Maison >développement back-end >Golang >Comment supprimer des éléments de liste chaînée à l'aide du langage Go
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.
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
}
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.
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
}
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.
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
}
type ListNode struct {
Val int Next *ListNode
}
func main () {
rreee}
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!