• 08/09/2024 12:42 AM

Listas Ligadas

porJesus Flores

Ago 18, 2021

En este ejercicio insertaremos e imprimiremos elementos en una lista ligada:

package main

import (
"fmt"
)

//Declaramos una estructura que represetará un nodo de la lista
type SinglyLinkedListNode struct {
data int32
next *SinglyLinkedListNode
}

//Declaramos una estructura que representa a lista
type SinglyLinkedList struct {
head *SinglyLinkedListNode //la propiedad head representa el inicio de la lista
tail *SinglyLinkedListNode //la propiedad tail representa el final de la lista
}

//insertNodeIntoSinglyLinkedList esta función permite agregar un nuevo elemento a lista
func (singlyLinkedList *SinglyLinkedList) insertNodeIntoSinglyLinkedList(nodeData int32) {
node := &SinglyLinkedListNode{
next: nil,
data: nodeData,
}

if singlyLinkedList.head == nil {
singlyLinkedList.head = node
} else {
singlyLinkedList.tail.next = node
}

singlyLinkedList.tail = node
}

//printLinkedList esta función permite imprimir la lista de elementos contenidos en la lista
// a diferencia de la función de inserción no pertenece a la estructura puesto que no se lo
//estamos indicacion antes del nombre de la función así (singlyLinkedList *SinglyLinkedList)
func printLinkedList(head *SinglyLinkedListNode) {
fmt.Println(head.data)
if head.next != nil {
//invocando nuevamente a la misma función estamos realizando lo que se conoce
//como recursividad
printLinkedList(head.next)
}
}

func main() {
//creamos una instancia de la lista
llist := SinglyLinkedList{}
//insertamos algunos elementos a la lista
llist.insertNodeIntoSinglyLinkedList(16)
llist.insertNodeIntoSinglyLinkedList(14)
llist.insertNodeIntoSinglyLinkedList(30)
//Imprimimos los elementos de la lista
printLinkedList(llist.head)
}

por Jesus Flores

Ingeniero de Software y Agile Coach

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *