\' Gambas class file
Public v0 As Nodo
Public v1 As Nodo
Public v2 As Nodo
Public v3 As Nodo
Public v4 As Nodo
Public v5 As Nodo
Public Nodotemporal As Nodo
Public Sub _new()
End
Public Sub Form_Open()
\'Ejemplo listas Enlazadas
definirNodosYenlazarlos()
TextLabel1.text = v0.dato
TextLabelFrutasSiguen.text = v0.VerLista()
Nodotemporal = v0
End
Public Sub definirNodosYenlazarlos()
\'defino los elementos
v0 = New Nodo("Locomotora")
v1 = New Nodo("Manzanas")
v2 = New Nodo("Peras")
v3 = New Nodo("Bananas")
v4 = New Nodo("Fresas")
v5 = New Nodo("Naranjas")
\'defino los enlaces
v0.siguiente = v1
v0.previo = Null \'inicio de la lista
v1.siguiente = v2
v1.previo = v0
v2.siguiente = v3
v2.previo = v1
v3.siguiente = v4
v3.previo = v2
v4.siguiente = v5
v4.previo = v3
v5.previo = v4
v5.siguiente = Null \'final de la lista
End
Public Sub ButtonAdelante_Click()
If IsNull(Nodotemporal.siguiente) Then
TextLabelFrutasSiguen.text = "Ultimo Elemento"
Return
Endif
Nodotemporal = Nodotemporal.siguiente
TextLabel1.text = Nodotemporal.dato
TextLabelFrutasSiguen.text = Nodotemporal.VerLista()
End
Public Sub ButtonReiniciarLista_Click()
Nodotemporal = v0
TextLabel1.text = Nodotemporal.dato
TextLabelFrutasSiguen.text = Nodotemporal.VerLista()
End
Public Sub ButtonAnade_Click()
Dim ntmp As Nodo
\'creo un nuevo nodo
Dim nodoNuevo As New Nodo(TextBoxFrutaNueva.Text)
\'lo meto entre el nodo actual (el temporal) y el que le sigue
nodoNuevo.siguiente = Nodotemporal.siguiente
ntmp = nodoNuevo.siguiente
\'hacia adelante
Nodotemporal.siguiente = nodoNuevo
\'hacia atras
nodoNuevo.previo = Nodotemporal
ntmp.previo = nodoNuevo
\'muestro la nueva lista de siguientes
TextLabelFrutasSiguen.text = Nodotemporal.VerLista()
End
Public Sub ButtonBorra_Click()
\'compruebo que el vagon siguiente no es null (no se puede borrar)
If IsNull(Nodotemporal.previo) Then
Print "No puedo borrar"
Else
\'lo que hago es obtener el vagon que le siguiente al siguiente
Nodotemporal.previo.siguiente = Nodotemporal.siguiente
If IsNull(Nodotemporal.siguiente) Then
Else
Nodotemporal.siguiente.previo = Nodotemporal.previo
Nodotemporal = Nodotemporal.siguiente.previo
Endif
\'muestro la nueva lista de siguientes
TextLabel1.text = Nodotemporal.dato
TextLabelFrutasSiguen.text = Nodotemporal.VerLista()
Endif
End
Public Sub ButtonPrevio_Click()
If IsNull(Nodotemporal.previo) Then
TextLabelFrutasSiguen.text = "Primer Elemento"
Return
Endif
Nodotemporal = Nodotemporal.previo
TextLabel1.text = Nodotemporal.dato
TextLabelFrutasSiguen.text = Nodotemporal.VerLista()
End
Public Sub Form_Close()
\'Para no crear referencias circulares. borro todos los objetos
\'me coloco al fina de la lista
While (Not (Nodotemporal.siguiente = Null))
Nodotemporal = Nodotemporal.siguiente
Wend
While (Not (Nodotemporal.previo = Null))
Nodotemporal.siguiente = Null
Nodotemporal = Nodotemporal.previo
Wend
Nodotemporal.siguiente = Null
End