En el ejemplo siguiente se crea una lista enlazada, de 20 nodos, y luego invierte utilizando una función denominada ReverseList.
Cada nodo en la lista es en realidad una instancia de una clase de Visual Basic creado con la palabra clave nueva.
1.-Inicie un nuevo proyecto en Visual Basic y elija "EXE estándar".
Form1 se crea de forma predeterminada.
2.-En el menú Proyecto, seleccione Agregar módulo de clase, Class1 se crea de forma predeterminada.
En la ventana Propiedades del módulo de clase nueva, cambiar el nombre de Class1 a "Nodo", a continuación, pegar el siguiente código en la sección Declaraciones generales del Nodo:
clave pública como var Integer 'para mantener algunos datos.
Pública pnext Como puntero nodo a nodo siguiente en la lista.
3.-Agregar un botón de comando, Command1 a Form1.
4.-Pega el siguiente código en la sección Declaraciones generales de Form1:
Cabeza atenuado como puntero del objeto de nodo a la cabeza de la lista
Sub Form_Load privada ()
Dim curr Como puntero del objeto de nodo "hasta la posición actual en
Dim i lista Como Integer 'utilizado en el caso de loop
"CREAR LISTA
Establecer la cabeza = nuevo nodo 'puntero de objeto para el nuevo nodo
head.Key = 0 'cabeza de maniquí
Curr Set = cabeza "mantener la cabeza puntero aquí
Para i = 1 To 20 'n veces recorrer para llenar la lista
curr.pnext Set = Nuevo nodo "nodo después de insertar nuevos actual
Establecer curr = curr.pnext «conjunto la actual = nuevo nodo
curr.Key = i 'establecer el valor del nodo llave
Next i
cola maniquí curr.pnext Set = Nuevo nodo '
Curr Set = curr.pnext 'tendencia actual a la cola maniquí
curr.Key = 0 'ajustar el valor de la cola maniquí
Establecer curr.pnext = curr 'apunta a sí mismo para identificar final
Debug.Print "antes" y DumpList (cabeza) 'imprimir la lista
End Sub
Sub Command1_Click privada ()
«LISTA RERVERSE
cabeza ReverseList "aprobado en la cabeza a los ReverseList
Debug.Print "después de:" y DumpList (cabeza) 'impresión invertida lista
End Sub
Private Sub ReverseList (cabeza ByRef Como nodo)
"Lista reverso completo incluyendo la cabeza de maniquí y la cola
"Nota: la cabeza se convierte en la cola, la cola se convierte en la cabeza
Dim curr Como puntero del objeto de nodo a nodo actual
Dim nexx Como puntero del objeto de nodo a nodo siguiente
Establecer curr = head.pnext 'actual nodo después de la cabeza
head.pnext Set = cabeza de la cabeza se convierten en la cola
Si bien no es curr.pnext curr a pie toda la lista
Establecer nexx = curr.pnext 'puntero al nodo actual después de
puntos actuales curr.pnext Set = cabeza "de nuevo a la cabeza
Head Set = curr 'mover la cabeza a los actuales
Establecer curr = nexx "conjunto de nodos actuales = siguiente
Encaminarse a
curr.pnext Set = cabeza de la cabeza a punto de nuevo primer nodo
Head Set = curr 'volver la cabeza a la primera posición
End Sub
Función privada DumpList (cabeza ByRef Como nodo) As String
A pie de lista y volcado a la ventana de depuración
Strout atenuado como var temp String 'para celebrar cadena
Dim curr Como puntero del objeto de nodo a nodo actual
Establecer curr = head.pnext 'saltar la cabeza simulada
Si bien no es curr.pnext resto curr a pie de la lista para poner fin a
Strout = Strout & "" & CStr (curr.Key)
Establecer curr = curr.pnext 'actual del puntero al siguiente nodo
Encaminarse a
DumpList Strout = 'cadena de retorno
End Function