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

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2023-06-09 11:50:191532parcourir

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
}

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)
.

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