Maison > Problème commun > Comment implémenter une liste chaînée unique en langage Go

Comment implémenter une liste chaînée unique en langage Go

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2023-06-09 11:50:19
original
1536 Les gens l'ont consulté

La méthode d'implémentation d'une liste chaînée dans le langage Go est la suivante : 1. Créer un exemple de fichier Go ; 2. Définir la structure des nœuds de la liste chaînée ; 3. Parcourir les nœuds et ajouter de nouveaux nœuds en tête et à la fin de la liste chaînée ; 4. Insérez ou insérez à la position spécifiée de la liste chaînée Supprimez le nouveau nœud ; 5. Obtenez la valeur du nœud à la position spécifiée dans la liste chaînée et implémentez des opérations telles que l'ajout, la suppression, la modification et l'interrogation de nœuds.

Comment implémenter une liste chaînée unique en langage Go

Le système d'exploitation de ce tutoriel : système Windows 10, version Go1.20.1, ordinateur Dell G3.

Des listes chaînées peuvent être implémentées dans le langage Go via des structures et des pointeurs.

La méthode spécifique est la suivante :

1 Définir la structure des nœuds de la liste chaînée

type ListNode struct {
    Val int
    Next *ListNode
}
Copier après la connexion

2. Implémenter des opérations telles que l'ajout, la suppression, la modification et la vérification des nœuds

// 遍历节点
func (head *ListNode) Traverse() {
for head != nil {
fmt.Println(head.Val)
head = head.Next
}
}
// 在链表头添加新节点
func (head *ListNode) AddAtHead(val int) *ListNode {
node := &ListNode{
Val:  val,
Next: head,
}
return node
}
// 在链表尾添加新节点
func (head *ListNode) AddAtTail(val int) *ListNode {
if head == nil {
return &ListNode{
Val:  val,
Next: nil,
}
}
cur := head
for cur.Next != nil {
cur = cur.Next
}
cur.Next = &ListNode{
Val:  val,
Next: nil,
}
return head
}
// 在链表指定位置插入新节点
func (head *ListNode) AddAtIndex(index, val int) *ListNode {
if index <= 0 {
return head.AddAtHead(val)
}
cur := head
for i := 0; i < index-1 && cur != nil; i++ {
cur = cur.Next
}
if cur == nil {
return head
}
node := &ListNode{
Val:  val,
Next: cur.Next,
}
cur.Next = node
return head
}
// 删除链表指定位置的节点
func (head *ListNode) DeleteAtIndex(index int) *ListNode {
if index < 0 {
return head
}
if index == 0 {
return head.Next
}
cur := head
for i := 0; i < index-1 && cur != nil; i++ {
cur = cur.Next
}
if cur == nil || cur.Next == nil {
return head
}
cur.Next = cur.Next.Next
return head
}
// 获取链表指定位置的节点值
func (head *ListNode)
Copier après la connexion
.

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!

Étiquettes associées:
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