Clases para Implementacion de Listas

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