A continuación os muestro un ejemplo de lo que es una lista enlazada.
Lo he convertido de un ejemplo de Python.
Lo cierto es que se me hace muy requete raro que en la misma clase se defina una propiedad como la misma clase.. (es como si se viera en un espejo y no tuviese fin).
Primero la clase Nodo:
Private hdato As String
Property dato As String
Private hsiguiente As Nodo
Property siguiente As Nodo
Public Sub _new(dat As String, Optional prox As Nodo)
hdato = dat
hsiguiente = prox
End
Private Function dato_Read() As String
Return hdato
End
Private Sub dato_Write(Value As String)
hdato = Value
End
Private Function siguiente_Read() As Nodo
Return hsiguiente
End
Public Sub VerLista(un_nodo As Nodo)
While un_nodo
Print (un_nodo.dato)
un_nodo = un_nodo.siguiente
Wend
End
Private Sub siguiente_Write(Value As Nodo)
hsiguiente = Value
End
Property dato As String
Private hsiguiente As Nodo
Property siguiente As Nodo
Public Sub _new(dat As String, Optional prox As Nodo)
hdato = dat
hsiguiente = prox
End
Private Function dato_Read() As String
Return hdato
End
Private Sub dato_Write(Value As String)
hdato = Value
End
Private Function siguiente_Read() As Nodo
Return hsiguiente
End
Public Sub VerLista(un_nodo As Nodo)
While un_nodo
Print (un_nodo.dato)
un_nodo = un_nodo.siguiente
Wend
End
Private Sub siguiente_Write(Value As Nodo)
hsiguiente = Value
End
Y el código del modulo principal:
' gambas module file
' Este ejemplo lo he implementado a Gambas3. El código en Python se puede encontrar en el libro:
' "Algoritmos y programación 1 con Python". No muestra su autor. Desconozco si hay otro manual que lo continue.
' Comienzo del ejemplo
' Debemos imaginar la lista enlazada como un conjunto de vagones, uno detrás de otro
Public Sub Main()
' Sunpogamos que tenemos tres vagones, v1,v2,v3. Cada vagón transporta fruta
Dim v1, v2, v3, lista As Nodo
' El vagon 3 sera el ultimo de la cola, no tiene ningun vagon enganchado tras de si
v3 = New Nodo("Bananas")
' El vagon 2 esta enganchado al vagon 3
v2 = New Nodo("Peras", v3)
' El vagon 1 esta engando al vagon 2
v1 = New Nodo("Manzanas", v2)
'A nuestro método VerLista solo le pasamos el primer vagón para que
'nos muestre los vagones que tiene enganchado tras de si.
'
' Hagamos que lista comience desde el siguiente al v1. La hemos llamado lista por
' que es una lista de vagones, que es lo que nos va a mostrar
lista = v1
' Le pasamos al metodo Verlista, lista. Al igual que si le hubieramos pasado v1
v1.VerLista(lista)
Print
lista = lista.siguiente
v1.VerLista(lista)
Print
' Si queremos desenganchar un vagon. Cambiamos el enganche.
' Desenganchamos el vagon de en medio.(v2)
lista = v1
v1.siguiente = v1
v1.VerLista(lista)
' ¿ Que ocurrirá si al final del vagon1 enganchamos el propipio vagon1 ?.
' Se produce una representación infinita, nunca termina. La lista infinita se conoce como lista circular
' Podríamos haber añadido como final del vagon3, el vagon1. Otra lista infinita
End
' Este ejemplo lo he implementado a Gambas3. El código en Python se puede encontrar en el libro:
' "Algoritmos y programación 1 con Python". No muestra su autor. Desconozco si hay otro manual que lo continue.
' Comienzo del ejemplo
' Debemos imaginar la lista enlazada como un conjunto de vagones, uno detrás de otro
Public Sub Main()
' Sunpogamos que tenemos tres vagones, v1,v2,v3. Cada vagón transporta fruta
Dim v1, v2, v3, lista As Nodo
' El vagon 3 sera el ultimo de la cola, no tiene ningun vagon enganchado tras de si
v3 = New Nodo("Bananas")
' El vagon 2 esta enganchado al vagon 3
v2 = New Nodo("Peras", v3)
' El vagon 1 esta engando al vagon 2
v1 = New Nodo("Manzanas", v2)
'A nuestro método VerLista solo le pasamos el primer vagón para que
'nos muestre los vagones que tiene enganchado tras de si.
'
' Hagamos que lista comience desde el siguiente al v1. La hemos llamado lista por
' que es una lista de vagones, que es lo que nos va a mostrar
lista = v1
' Le pasamos al metodo Verlista, lista. Al igual que si le hubieramos pasado v1
v1.VerLista(lista)
lista = lista.siguiente
v1.VerLista(lista)
' Si queremos desenganchar un vagon. Cambiamos el enganche.
' Desenganchamos el vagon de en medio.(v2)
lista = v1
v1.siguiente = v1
v1.VerLista(lista)
' ¿ Que ocurrirá si al final del vagon1 enganchamos el propipio vagon1 ?.
' Se produce una representación infinita, nunca termina. La lista infinita se conoce como lista circular
' Podríamos haber añadido como final del vagon3, el vagon1. Otra lista infinita
End
Aquí tenéis el código.
Saludos
Ejemplo_lista_enlazada.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Ejemplo_lista_enlazada.tar.gz | |
Tamaño: | 6.25 KB | |
Descargado: | 62 veces |
Ejemplo_lista_enlazada.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Ejemplo_lista_enlazada.tar.gz | |
Tamaño: | 6.25 KB | |
Descargado: | 62 veces |
Ejemplo_lista_enlazada.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Ejemplo_lista_enlazada.tar.gz | |
Tamaño: | 6.25 KB | |
Descargado: | 62 veces |