Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement