• No se han encontrado resultados

Listas Enlazadas

N/A
N/A
Protected

Academic year: 2021

Share "Listas Enlazadas"

Copied!
8
0
0

Texto completo

(1)

Listas Enlazadas

Listas Enlazadas

Una Lista Enlazada (Linked List) es

Una Lista Enlazada (Linked List) es una colección lineal de estructuras autor-referenciadas llamadas nodos yuna colección lineal de estructuras autor-referenciadas llamadas nodos y conectadas por apuntadores. En una lista enlazada se puede tener acceso a los demás nodos vía apuntador, el conectadas por apuntadores. En una lista enlazada se puede tener acceso a los demás nodos vía apuntador, el cual va dentro de la estructura. Estas listas

cual va dentro de la estructura. Estas listas son dinámicas, se expanden en cuanto sea necesario otro nodo, son dinámicas, se expanden en cuanto sea necesario otro nodo, y pory por convención el último nodo siempre apunta a un

convención el último nodo siempre apunta a un NULLNULL. Las pilas y colas de espera son versiones de listas. Las pilas y colas de espera son versiones de listas enlazadas, y los árboles, no propiamente lineales, también siguen el mismo principio.

enlazadas, y los árboles, no propiamente lineales, también siguen el mismo principio.

Las listas enlazadas, al igual que los arreglos, son una estructura de datos que pueden usarse para crear Las listas enlazadas, al igual que los arreglos, son una estructura de datos que pueden usarse para crear listas. Veamos ahora las ventajas que tienen las listas enlazadas. Estas son dinámicas, es decir, no tienen un listas. Veamos ahora las ventajas que tienen las listas enlazadas. Estas son dinámicas, es decir, no tienen un número específico de elementos ya que pueden expandirse y contraerse según lo necesario. Son adecuadas número específico de elementos ya que pueden expandirse y contraerse según lo necesario. Son adecuadas cuando se prescinde el número de elementos que tendrá la lista. Los arreglos no, estos tienen un número cuando se prescinde el número de elementos que tendrá la lista. Los arreglos no, estos tienen un número definido de elementos tras la compilación y no se puede modificar. Los arreglos se llenan, pero las listas definido de elementos tras la compilación y no se puede modificar. Los arreglos se llenan, pero las listas enlazadas sólo se llenan cuando no hay suficiente memoria para satisfacer la demanda de un nuevo nodo, esto enlazadas sólo se llenan cuando no hay suficiente memoria para satisfacer la demanda de un nuevo nodo, esto en la actualidad ya no es problema. Nótese que los nodos de una lista enlazada no se disponen en memoria de en la actualidad ya no es problema. Nótese que los nodos de una lista enlazada no se disponen en memoria de manera contigua.

manera contigua.

Ilustración 1 Ilustración 1

En el segmento de código del programa LinkList.cpp que se muestra en la Ilustración 1, sólo se presenta el En el segmento de código del programa LinkList.cpp que se muestra en la Ilustración 1, sólo se presenta el contenido de la función

(2)

declarando un objeto de la clase

declarando un objeto de la clase ManagerListManagerList al cual llamaremosal cual llamaremos AdminAdmin. Observe el contenido de las l. Observe el contenido de las líneasíneas 8282 aa 112

112. En el menú nos dan las opciones de crear un nuevo elemento (. En el menú nos dan las opciones de crear un nuevo elemento (nodonodo), borrarlo, reemplazar el contenido del), borrarlo, reemplazar el contenido del elemento y mostrar la lista, y para ello se utilizan métodos del objeto

elemento y mostrar la lista, y para ello se utilizan métodos del objeto AdminAdmin el cual no pertenece a una claseel cual no pertenece a una clase auto-referenciad

auto-referenciada, sino que ésta ma, sino que ésta maneja a una clase que si aneja a una clase que si es auto-referenciada.es auto-referenciada.

Con ver ese segmento de código no se entenderá a grandes rasgos lo que es una lista enlazada, por lo que Con ver ese segmento de código no se entenderá a grandes rasgos lo que es una lista enlazada, por lo que tendremos que adentrarnos a las partes del código que interesan. No iniciaré explicando el contenido de las tendremos que adentrarnos a las partes del código que interesan. No iniciaré explicando el contenido de las clases o los métodos de clase línea por l

clases o los métodos de clase línea por l ínea, sino que tenemos que comprender a detalle el comportamiento deínea, sino que tenemos que comprender a detalle el comportamiento de la lista enlazada, así como el de las operaciones que se pueden hacer sobre ella. En este trabajo sólo se la lista enlazada, así como el de las operaciones que se pueden hacer sobre ella. En este trabajo sólo se expondrá 3 de ellas; crear un nuevo nodo, borrar un nodo y reemplazar el contenido de un nodo. El cuarto, expondrá 3 de ellas; crear un nuevo nodo, borrar un nodo y reemplazar el contenido de un nodo. El cuarto, mostrar lista, es más para

mostrar lista, es más para fines de visualización que manipulación en el programa.fines de visualización que manipulación en el programa.

Historia de una Lista Enlazada

Historia de una Lista Enlazada

Empecemos haciendo una abstracción de cómo queremos ir armando una lista enlazada. Primero tenemos Empecemos haciendo una abstracción de cómo queremos ir armando una lista enlazada. Primero tenemos que imaginar que ésta se está armando. Para

que imaginar que ésta se está armando. Para ello nos auxiliaremos de diagramas.ello nos auxiliaremos de diagramas.

En la Ilustración 2 tenemos el primer nodo de nuestra lista enlazada, éste contiene a la l

En la Ilustración 2 tenemos el primer nodo de nuestra lista enlazada, éste contiene a la l etraetraaapor lo que depor lo que de esto deducimos que proviene de una estructura diseñada para almacenar datos de tipo

esto deducimos que proviene de una estructura diseñada para almacenar datos de tipo charchar, pero esto no es lo, pero esto no es lo que interesa por el momento. Al momento de crear la lista enlazada se creó un nodo por default que contiene a que interesa por el momento. Al momento de crear la lista enlazada se creó un nodo por default que contiene a la letra

la letra aa y además un apuntador enlazándolo con el siguiente elemento, que por el momento esy además un apuntador enlazándolo con el siguiente elemento, que por el momento es NULLNULL. Si se. Si se quiere agregar un nodo a la lista, necesitaremos imaginarnos como es que lo hará el programa. Necesitamos quiere agregar un nodo a la lista, necesitaremos imaginarnos como es que lo hará el programa. Necesitamos ayudantes, otros apuntadores que permitan facilitarnos la tarea. Los llamaremos

ayudantes, otros apuntadores que permitan facilitarnos la tarea. Los llamaremos firstfirst yy lastlast, y ambos apuntaran, y ambos apuntaran al primer elemento como se muestra en la Ilustración 3. Esto se hace pensando en que si queremos hacer una al primer elemento como se muestra en la Ilustración 3. Esto se hace pensando en que si queremos hacer una búsqueda, necesitamos saber dónde se encuentra el primer nodo de la lista, y si queremos agregar un nodo búsqueda, necesitamos saber dónde se encuentra el primer nodo de la lista, y si queremos agregar un nodo necesitamos saber en dónde se encuentra el último. Para eso sirven

necesitamos saber en dónde se encuentra el último. Para eso sirven firstfirst yy lastlast, por lo que, por lo que firstfirst siempre apuntarásiempre apuntará al primero y

al primero y lastlast siempre apuntará al último.siempre apuntará al último.

a a NNUULLLL a a NNUULLLL first first last last Ilustración

Ilustración 2 2 Ilustración Ilustración 33 Creemos un nuevo ayudante,

Creemos un nuevo ayudante, actualactual, éste será quien le ayude a, éste será quien le ayude a lastlast a crear un nuevo nodo, y que apuntaráa crear un nuevo nodo, y que apuntará también al último nodo de la lista. Como se muestra en la Ilustración 4a, se ha creado un nuevo nodo que también al último nodo de la lista. Como se muestra en la Ilustración 4a, se ha creado un nuevo nodo que contiene la letra

contiene la letra bb y necesitamos enlazary necesitamos enlazar aa concon bb. Para esto le decimos a. Para esto le decimos a lastlast que apunte a este nodo, ya queque apunte a este nodo, ya que ahora será el último, y que el nodo

ahora será el último, y que el nodo aa apunte ahora al nodoapunte ahora al nodo bbreferenciado porreferenciado por lastlast. ¿Cómo hacemos para que el. ¿Cómo hacemos para que el nodo

nodo aa apunte ahora al nodoapunte ahora al nodo bb referenciado por lastreferenciado por last? El apuntador del nodo? El apuntador del nodo aa solo puede enlazarse consolo puede enlazarse con bb

mediante

mediante actualactual, ya que en términos informáticos así es la sintaxis en un programa (Véase Ilustración 5), y eso, ya que en términos informáticos así es la sintaxis en un programa (Véase Ilustración 5), y eso se tratará en una sección posterior, ahora solo interesa entender a las listas enlazadas. Ya que se hizo que el se tratará en una sección posterior, ahora solo interesa entender a las listas enlazadas. Ya que se hizo que el nodo

nodoaaapunte al nodoapunte al nodobbmediante el apuntadormediante el apuntador actualactual,,bbtendrá que apuntar atendrá que apuntar a NULLNULL por convención. El procesopor convención. El proceso terminado se muestra en la Ilustración 4b. ¿Por qué, sí 

terminado se muestra en la Ilustración 4b. ¿Por qué, sí  firstfirst hace referencia al mismo nodo quehace referencia al mismo nodo que actualactual, , nono utilizamos éste para ayudar a

utilizamos éste para ayudar a lastlast? Porque está condición solo se cumple al momento de hacer un segundo? Porque está condición solo se cumple al momento de hacer un segundo nodo, sí queremos hacer un tercero, incluso el nodo 1000,

nodo, sí queremos hacer un tercero, incluso el nodo 1000, no podemos mover ano podemos mover a firstfirst de su lugar, ya quede su lugar, ya que perderíamos el inicio de la lista, sin embargo

(3)

a a NNUULLLL first first last last b b actual actual a a NULLNULL first

first lastlast

b b

actual actual

Ilustración

Ilustración 4a 4a Ilustración Ilustración 4b4b

Al principio esto puede ser un poco difícil de digerir para ser llevado a código, pero no hay que perdernos, Al principio esto puede ser un poco difícil de digerir para ser llevado a código, pero no hay que perdernos, más adelante será explicado con código y s

más adelante será explicado con código y s e entenderá fácilmente.e entenderá fácilmente.

Ilustración 5 Ilustración 5

Agreguemos un par de nodos más a la lista, el proceso es el mismo y los colocaremos por

Agreguemos un par de nodos más a la lista, el proceso es el mismo y los colocaremos por pasos:pasos: 1.

1. Hacer queHacer que actualactual apunte a lo mismo queapunte a lo mismo que lastlast.. 2.

2. Crear un nuevo nodo y queCrear un nuevo nodo y que lastlast lo apunte.lo apunte. 3.

3. Darle nombre al nodo referenciado porDarle nombre al nodo referenciado por lastlast.. 4.

4. Hacer que el nodo referenciado porHacer que el nodo referenciado por actualactual apunte al nodo referenciado porapunte al nodo referenciado por lastlast.. 5.

5. Que el nodo referenciado porQue el nodo referenciado por lastlast apunte a unapunte a un NULLNULL.. 6.

6. Y queY que actualactual regrese a apuntar al primer nodo de la lista.regrese a apuntar al primer nodo de la lista.

El paso 6 será mejor comprendido en el transcurso de la explicación, ya que habíamos mencionado que El paso 6 será mejor comprendido en el transcurso de la explicación, ya que habíamos mencionado que actual

actual iba a ser ayudante deiba a ser ayudante de lastlast, pero él también tiene tareas distintas y necesitará un ayudante, al que desde, pero él también tiene tareas distintas y necesitará un ayudante, al que desde ahora lo conoceremos como

ahora lo conoceremos como beforebefore..

Si ejecutamos este algoritmo un par de veces más tendremos una lista como en la Ilustración 6. Si ejecutamos este algoritmo un par de veces más tendremos una lista como en la Ilustración 6.

a

a NNUULLLL

first

first lastlast

d d actual actual b b cc Ilustración 6 Ilustración 6

Ahora, antes de mostrar como borrar nodos y reemplazar contenido de los nodos, necesitamos aprender a Ahora, antes de mostrar como borrar nodos y reemplazar contenido de los nodos, necesitamos aprender a movernos por la lista, y es aquí en donde entran

movernos por la lista, y es aquí en donde entran actualactual yy beforebefore. Para empezar, veamos las acciones que. Para empezar, veamos las acciones que necesitamos ejecutar para movernos a través de una

necesitamos ejecutar para movernos a través de una lista enlazada:lista enlazada: 1.

1. actualactual yy beforebefore apunten al mismo nodo.apunten al mismo nodo. 2.

2. actualactual apuntará al siguiente nodo, haciendo queapuntará al siguiente nodo, haciendo que acutalacutal sea igual al enlace del nodosea igual al enlace del nodo referenciado por

referenciado por beforebefore (que es el mismo que(que es el mismo que actualactual).). 3.

3. Los pasos 1 y 2 se ejecutaran mientrasLos pasos 1 y 2 se ejecutaran mientras actualactual sea diferente desea diferente de NULLNULL y que el contenidoy que el contenido del nodo referenciado por

del nodo referenciado por actualactual no sea el que queremos.no sea el que queremos.

Los pasos 1 y 2 se visualizan de la Ilustración 7 a la 10, simulando que queremos movernos al nodo Los pasos 1 y 2 se visualizan de la Ilustración 7 a la 10, simulando que queremos movernos al nodocc..

(4)

a

a NNUULLLL

first

first lastlast

d d actual actual b b cc before before Ilustración 7 Ilustración 7

Hasta la Ilustración 8 se han ejecutado los pasos 1 y 2 pero

Hasta la Ilustración 8 se han ejecutado los pasos 1 y 2 pero actualactual aún no está apuntando a un nodo queaún no está apuntando a un nodo que contenga

contengacc, y tampoco en NULL, y tampoco enNULL, así que se , así que se tiene que ejecutar nuevamente.tiene que ejecutar nuevamente.

a

a NNUULLLL

first

first lastlast

d d actual actual b b cc before before Ilustración 8 Ilustración 8

En la Ilustración 9 se ejecuta 1 del segundo ciclo y en la Ilustración 10 se ha ejecutado 2. En la Ilustración 9 se ejecuta 1 del segundo ciclo y en la Ilustración 10 se ha ejecutado 2.

a

a NUNULLLL

first

first lastlast

d d actual actual b b cc before before Ilustración 9 Ilustración 9

Vemos que hasta la Ilustración 10 se han terminado de ejecutar dos veces los pasos 1 y 2, y se observa que Vemos que hasta la Ilustración 10 se han terminado de ejecutar dos veces los pasos 1 y 2, y se observa que actual

actual que no esque no es NULLNULL, ya está apuntando a un nodo que contiene, ya está apuntando a un nodo que contiene cc. Hasta aquí podemos dar por concluido el. Hasta aquí podemos dar por concluido el proceso de moverse por una lista enlazada. Sólo resaltaremos el hecho, de que al finalizar este método,

proceso de moverse por una lista enlazada. Sólo resaltaremos el hecho, de que al finalizar este método, beforebefore apunta a un nodo antes del nodo que apunta

apunta a un nodo antes del nodo que apunta actualactual, esto es de utilidad al momento de eliminar nodos, que es el, esto es de utilidad al momento de eliminar nodos, que es el método que se abordará a continuación. En el método de borrar, se reescribirán los enlaces, de manera que el método que se abordará a continuación. En el método de borrar, se reescribirán los enlaces, de manera que el nodo referenciado por

nodo referenciado por beforebefore tenga ahora la dirección que tiene el nodo referenciado portenga ahora la dirección que tiene el nodo referenciado por actualactual. De esta. De esta manera el nodo referenciado por

manera el nodo referenciado por actualactual queda libre para ser eliminado.queda libre para ser eliminado.

a

a NNUULLLL

first

first lastlast

d d actual actual b b cc before before Ilustración 10 Ilustración 10

(5)

Entonces concluyendo, las acciones que deben ejecutarse para eliminar un nodo de una lista enlazada son Entonces concluyendo, las acciones que deben ejecutarse para eliminar un nodo de una lista enlazada son las siguientes:

las siguientes:

1.

1. Mover el apuntadorMover el apuntador actualactual al nodo que se desea eliminar.al nodo que se desea eliminar. 2.

2. El nodo referenciado porEl nodo referenciado por beforebefore tiene el mismo enlace del nodo referenciado portiene el mismo enlace del nodo referenciado por actualactual.. 3.

3. Eliminamos el nodo referenciado porEliminamos el nodo referenciado por actualactual.. 4.

4. Si el nodo eliminado fue el último,Si el nodo eliminado fue el último, lastlast debe de hacer referencia al nodo que apuntadebe de hacer referencia al nodo que apunta before

before.. 5.

5. LuegoLuego actualactual debe hacer referencia al siguiente nodo, el apuntado por el nododebe hacer referencia al siguiente nodo, el apuntado por el nodo referenciado por

referenciado por beforebefore.. 6.

6. SiSi actualactual no esno es NULLNULL se repetirán los pasos del 1 al 6 para eliminar los demás nodos quese repetirán los pasos del 1 al 6 para eliminar los demás nodos que contengan el símbolo indeseado.

contengan el símbolo indeseado.

Antes de ilustrar los pasos anteriores se aclara que el primer nodo de la lista no puede ser eliminado, ya Antes de ilustrar los pasos anteriores se aclara que el primer nodo de la lista no puede ser eliminado, ya que perderíamos el inicio de la lista y se

que perderíamos el inicio de la lista y se verán afectados los demás nodos, puede ser reemplazado su contenido.verán afectados los demás nodos, puede ser reemplazado su contenido. No quiere decir que no se pueda eliminar bajo ninguna circunstancia, si puede ser eliminado, haciendo que No quiere decir que no se pueda eliminar bajo ninguna circunstancia, si puede ser eliminado, haciendo que firstfirst apunte al siguiente elemento de la lista, pero ese algoritmo no será detallado en esta sección, ya que el código apunte al siguiente elemento de la lista, pero ese algoritmo no será detallado en esta sección, ya que el código que se mostrará más adelante simplemente no lo hace.

que se mostrará más adelante simplemente no lo hace.

Ilustremos ahora los pasos anteriores, suponiendo que el nodo que queremos eliminar es el nodo Ilustremos ahora los pasos anteriores, suponiendo que el nodo que queremos eliminar es el nodo cc,, entonces en la Ilustración 10 ya se habrá ejecutado el paso 1. En la Ilustración 11 se ha ejecutado ya el paso 2, entonces en la Ilustración 10 ya se habrá ejecutado el paso 1. En la Ilustración 11 se ha ejecutado ya el paso 2, cuanto el nodo

cuanto el nodo b,b,referenciado porreferenciado por before,before, hace referencia al nodo referenciado por el nodohace referencia al nodo referenciado por el nodo cc, referenciado por, referenciado por actual.

actual.

a

a NNUULLLL

first

first lastlast

d d actual actual b b cc before before Ilustración 11 Ilustración 11

Tras ejecutar el paso 3 y 5, donde eliminamos el nodo referenciado por

Tras ejecutar el paso 3 y 5, donde eliminamos el nodo referenciado por actualactual y este apunta ahora al nodoy este apunta ahora al nodo siguiente el diagrama queda como en la Ilustración 12. El paso 4 no se ha ejecutado ya que no fue

siguiente el diagrama queda como en la Ilustración 12. El paso 4 no se ha ejecutado ya que no fue el último nodoel último nodo el que se eliminó. Esto se seguirá ejecutando hasta que

el que se eliminó. Esto se seguirá ejecutando hasta que actualactual apunte aapunte a NULLNULL, por si todavía encuentra otro, por si todavía encuentra otro nodo

nodocc, pero como no es así,, pero como no es así, actualactual terminará apuntando aterminará apuntando a NULLNULL y el proceso concluirá. Si se quiere utilizar estey el proceso concluirá. Si se quiere utilizar este proceso nuevamente en el futuro, tenemos que reiniciar el valor

proceso nuevamente en el futuro, tenemos que reiniciar el valor dede actualactual, haciendo que apunte nuevamente al, haciendo que apunte nuevamente al primer nodo de la lista, y

primer nodo de la lista, y entonces tendremos la Ilustración 13. No entonces tendremos la Ilustración 13. No importaimporta beforebefore donde apunte al finalizar.donde apunte al finalizar.

a

a NNUULLLL

first

first lastlast

d d actual actual b b before before Ilustración 12 Ilustración 12

(6)

a

a NNUULLLL

first

first lastlast

d d actual actual b b before before Ilustración 13 Ilustración 13

Por último tenemos el método que reemplaza elementos de los nodos por otros. Para ello tenemos que Por último tenemos el método que reemplaza elementos de los nodos por otros. Para ello tenemos que movernos, de la misma manera que lo hicimos anteriormente, a los nodos que contienen el dato que queremos movernos, de la misma manera que lo hicimos anteriormente, a los nodos que contienen el dato que queremos cambiar, y reemplazarlo por otro, que será dado por un medio externo al programa, éste puede ser el usuario. cambiar, y reemplazarlo por otro, que será dado por un medio externo al programa, éste puede ser el usuario.

Los pasos a seguir para ejecutar el método son: Los pasos a seguir para ejecutar el método son:

1.

1. MoverMover actualactual al nodo que se desea reemplazar.al nodo que se desea reemplazar. 2.

2. Escribir sobre él el nuevo símbolo.Escribir sobre él el nuevo símbolo. 3.

3. Y ejecutar los pasos 1 y 2 siY ejecutar los pasos 1 y 2 si actualactual no esno es NULLNULL.. 4.

4. Regresar a queRegresar a que actualactual apunte al primer nodo.apunte al primer nodo. El paso 3 es para

El paso 3 es para cuando hay más de un cuando hay más de un elemento del que se quiere reemplazar.elemento del que se quiere reemplazar.

Ya que terminamos de describir las operaciones que se usaron en el código, es momento de pasar esta Ya que terminamos de describir las operaciones que se usaron en el código, es momento de pasar esta abstracción a un código real.

abstracción a un código real.

Código de una Lista Enlazada

Código de una Lista Enlazada

En esta explicación asumiré que el lector ya conoce el lenguaje en el que está escrito el programa que es En esta explicación asumiré que el lector ya conoce el lenguaje en el que está escrito el programa que es c++, así que sólo me limitaré a presentar los segmentos de código, y es tarea del lector analizar y comprender c++, así que sólo me limitaré a presentar los segmentos de código, y es tarea del lector analizar y comprender los algoritmos puesto que ya están hechas las analogías y

los algoritmos puesto que ya están hechas las analogías y las abstracciones.las abstracciones.

En la Ilustración 14 se presenta el famoso nodo, que es una clase auto-referenciada por un apuntador, la En la Ilustración 14 se presenta el famoso nodo, que es una clase auto-referenciada por un apuntador, la cual contiene dos métodos, que sirven para dar y

cual contiene dos métodos, que sirven para dar y obtener el valor del contenido.obtener el valor del contenido.

Ilustración 14 Ilustración 14

(7)

Al principio del presente trabajo se hablo acerca de una clase que administraba la lista, y es la que se Al principio del presente trabajo se hablo acerca de una clase que administraba la lista, y es la que se presenta en la Ilustración 15, en

presenta en la Ilustración 15, en ella están los métodos abstraídos en la sección anterior, ella están los métodos abstraídos en la sección anterior, los cuales se presentanlos cuales se presentan en las Ilustraciones posteriores.

en las Ilustraciones posteriores.

Ilustración 15 Ilustración 15

Ilustración 16 Ilustración 16

(8)

En la Ilustración 16 se agregó el constructor que nos crea un nodo

En la Ilustración 16 se agregó el constructor que nos crea un nodo aa inicialmente. ¿Recuerda la Ilustracióninicialmente. ¿Recuerda la Ilustración 5?, yo no me he olvidado de que le iba a explicar el porqué de la sintaxis. Como

5?, yo no me he olvidado de que le iba a explicar el porqué de la sintaxis. Como firstfirst,, actualactual,, beforebefore,, lastlast, son, son apuntadores a una clase, pueden tratárseles como objetos, pero no objetos cualesquiera. Como son objetos se apuntadores a una clase, pueden tratárseles como objetos, pero no objetos cualesquiera. Como son objetos se puede acceder a sus miembros, por ejemplo

puede acceder a sus miembros, por ejemplo linklink oo setSymsetSym yy getSymgetSym, pero de una manera especial. Con, pero de una manera especial. Con cualquier objeto haríamos

cualquier objeto haríamos objeto.linkobjeto.link uu objeto.setSymobjeto.setSym pero con ellos no, ya que, primero que nada, deben depero con ellos no, ya que, primero que nada, deben de contener la dirección de una clase u objeto, así que se le debe dar una asignación dinámica en memoria, contener la dirección de una clase u objeto, así que se le debe dar una asignación dinámica en memoria, empleando

empleando new,new, la palabra reservada de c++. Ejemplificando lo anterior, observe la líneala palabra reservada de c++. Ejemplificando lo anterior, observe la línea 4141 de la Ilustración 16.de la Ilustración 16. Para acceder a

Para acceder a linklink u otro método, se usa el operador de referenciau otro método, se usa el operador de referencia ->-> (guion mayor que) en vez de(guion mayor que) en vez de .. (punto),(punto), como se muestra en la línea

como se muestra en la línea 3636 de la Ilustración 16, dónde se le dice al constructor cuando crea el primer nodo,de la Ilustración 16, dónde se le dice al constructor cuando crea el primer nodo, que éste debe hacer referencia a un

que éste debe hacer referencia a un NULLNULL, y que se le tiene que ingresar el símbolo, y que se le tiene que ingresar el símbolo aa mediante el métodomediante el método setSym

setSym. Esto es porque. Esto es porque firstfirst,, actualactual,, beforebefore yy lastlast son en sí apuntadores.son en sí apuntadores.

Ilustración 17 Ilustración 17

En la Ilustración 17, a partir de la línea

En la Ilustración 17, a partir de la línea 7070 se presenta el método que imprime la lista en pantalla, éste lose presenta el método que imprime la lista en pantalla, éste lo hace hasta que

hace hasta que actualactual seasea NULLNULL, y mientras eso no suceda camina por la lista imprimiendo cada símbolo,, y mientras eso no suceda camina por la lista imprimiendo cada símbolo, separando con

separando con ->-> para visualizar el flujo de expansión de la lista, al final, imprimepara visualizar el flujo de expansión de la lista, al final, imprime NULLNULL y vuelve a colocary vuelve a colocar actualactual al principio de la lista. Anexo a este documento usted puede encontrar el código completo del programa que al principio de la lista. Anexo a este documento usted puede encontrar el código completo del programa que simula una lista enlazada simple. En el

simula una lista enlazada simple. En el programa encontrará varias líneas que no programa encontrará varias líneas que no se explicaron en el análisis de lase explicaron en el análisis de la pasada sección, y se deja como tarea al lector que descubra el porqué de ellas, esto se logra con la práctica y el pasada sección, y se deja como tarea al lector que descubra el porqué de ellas, esto se logra con la práctica y el tiempo.

Referencias

Documento similar