En este ejercicio insertaremos e imprimiremos elementos en una lista ligada:
package mainimport (
"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)
}