* Lista Simplemente enlazada. * *//** * * @author Pain *///Clase Nodo. Utiliza el enlace llamado nodoDer    o nodo derecho...
}        else {            Nodo actual = primero;            while(actual.nodoDer != ultimo) {                actual = act...
En la figura F331-2 se presenta un ejemplo de una lista simplementeligada que almacena apellidos. El primer nodo de la lis...
3. Borrado de un elemento.   4. Búsqueda de un elemento.Antes de analizar cada una de estas operaciones, se presentara una...
Leer RES7. {Fin del ciclo del paso 6}       Recorrido de una lista simplemente ligadaLa operación de recorrido en una list...
Llamar a Recorre_recursivo con P^.LIGA {Llamada recursiva con elapuntador al siguiente nodo de la lista}2, {Fin del condic...
4. Crea (Q)2. Hacer Q^.INFO <- DATO, Q^.LIGA <- NULO y T^.LIGA <- Q       Eliminación en listas simplemente ligadasLa oper...
2. Si (P^.LIGA = NULO) {Se verifica si la lista tiene sólo un nodo}      entonces            Hacer P <- NULO      si no   ...
La operación de búsquedas de un elemento en una lista simplementeligada es muy fácil de realizar, aunque infidente ya que ...
apuntador, señalando al primer nodo}{Q es una variable tipo apuntador. INFO y LIGA son campos de los nodos de la lista}1. ...
•   no sepamos de antemano el tamaño requerido para nuestra aplicación   •   hay una gran cantidad de operaciones y manipu...
Algoritmo 5.2CREAFINAL(P){Este algoritmo crea una lista, agregando cada nuevo nodo al final dela misma}{P y Q son variable...
1.   Hacer T= P          2.   Repetir mientras T ->Liga =! NIL               {Recorre la lista hasta llegar al último elem...
Algoritmo 5.10ELIMINAÚLTIMO(P){Este algoritmo borra el último elemento de una lista.      P es elapuntador al primer nodo ...
{Este algoritmo busca recursivamente al elemento con información X enuna lista que se encuentra desordenada. P es el apunt...
Upcoming SlideShare
Loading in...5
×

Lista simple

13,641

Published on

2 Comments
1 Like
Statistics
Notes
No Downloads
Views
Total Views
13,641
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
274
Comments
2
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Lista simple"

  1. 1. * Lista Simplemente enlazada. * *//** * * @author Pain *///Clase Nodo. Utiliza el enlace llamado nodoDer o nodo derecho y el valor aintroducir.public class Nodo { Nodo nodoDer; int dato; public Nodo(int dato) { this.dato = dato; this.nodoDer = null; }}/* * Clase de Lista enlazada y metodos de agregar al final y borrar del mismo,asi como mostrar tamaño y visualizar lista. * */import javax.swing.JOptionPane;/** * * @author Pain */public class ListaS { private Nodo primero; private Nodo ultimo; private int tamano; public ListaS() { this.primero = null; this.ultimo = null; this.tamano = 0; }//Metodo utilizado para denotar que la lista se encuentra vacia. public boolean siVacio() { return (this.primero == null); }//Metodo para agregar al final de la lista. public ListaS addLast(int dato) { if(siVacio()) { Nodo nuevo = new Nodo(dato); primero = nuevo; ultimo = nuevo; nuevo.nodoDer = nuevo; } else { Nodo nuevo = new Nodo(dato); nuevo.nodoDer = null; ultimo.nodoDer = nuevo; ultimo = nuevo; } this.tamano++; return this; }//Metodo para borrar al final de la lista. public Nodo deleteLast() { Nodo eliminar = null; if(siVacio()) { JOptionPane.showMessageDialog(null, "La lista se encuentravacia"); return null; } if(primero == ultimo) { primero = null; ultimo = null;
  2. 2. } else { Nodo actual = primero; while(actual.nodoDer != ultimo) { actual = actual.nodoDer; } eliminar = actual.nodoDer; actual.nodoDer = null; ultimo = actual; } this.tamano--; return eliminar; }//Metodo que imprime el tamaño de la lista. public void tamano() { JOptionPane.showMessageDialog(null, "El tamaño es:n " + this.tamano); }//Metodo que imprime la lista y los valores ingresados. public void imprimir() { if(tamano != 0) { Nodo temp = primero; String str = ""; for(int i = 0; i < this.tamano; i++) { str = str + temp.dato + "n"; temp = temp.nodoDer; } JOptionPane.showMessageDialog(null, str); } }} Listas SimplesUna lista simplemente ligada constituye una colección de elementosllamados nodos. El orden entre estos se establece por medio depunteros; es decir, direcciones o referencias a otros nodos. Un tipoespecial de lista simplemente ligada es la lista vacía. La figura F331 -1 presenta la estructura de un nodo de una lista simplemente ligada.En general, un nodo consta de dos partes:1. Un campo INFORMACION que será del tipo de los datos que sequiera almacenar en la lista.2. Un campo LIGA, de tipo puntero, que se utiliza para establecer laliga o el enlace con otro nodo de la lista. Si el nodo fuera el último dela lista, este campo como valor NULO —vacio—. Al emplearse elcampo liga para relacionar dos, no será necesario almacenarfísicamente a los nodos en espacios contiguos.
  3. 3. En la figura F331-2 se presenta un ejemplo de una lista simplementeligada que almacena apellidos. El primer nodo de la lista es apuntadopor una variable P, de tipo apuntador —P almacena la dirección delprimer nodo—. El campo liga del último nodo de la tiene un valorNULO, que indica que dicho nodo no apunta a ningún otro. Elapuntador al inicio de la lista es importante porque permiteposicionarnos en el primer nodo de la misma y tener acceso al restode los elementos. Si, por alguna razón, este apuntador se extraviara,entonces perderemos toda la información almacenada en la lista. Porotra parte, si la lista simplemente ligada estuviera vacía, entonces elapuntador al tendrá el valor NULO. Operaciones con listas simplemente ligadasLas operaciones que pueden efectuarse en una lista simplementeligada son: 1. Recorrido de la lista. 2. Inserción de un elemento.
  4. 4. 3. Borrado de un elemento. 4. Búsqueda de un elemento.Antes de analizar cada una de estas operaciones, se presentara unalgoritmo que permite crear una lista simplemente ligada, al incorporarcada nuevo nodo al inicio.Crea_Inicio{Este algoritmo permite crear una lista simplemente ligada, agregando cada nuevo nodo alinicio de la misma}{P y Q son variables de tipo puntero. Los campos del nodo son INFO, que será del tipo dedatos que se quiera almacenar en la lista, y LIGA de tipo apuntador. P apunta al inicio dela lista. RES es una variable de tipo entero}1. Crear (P) {Se crea el primer nodo de la lista simplemente ligada}2. Leer P^.INFO3. Hacer P^.LIGA <- NULO4. Escribir “¿Desea ingresar más nodos a la lista? Si: 1, No: 0”5. Leer RES6. Mientras (RES = 1) Repetir Crear (Q) Leer Q^.INFO Hacer Q^.LIGA <- P y P <- Q Escribir “¿Desea ingresar más nodos a la lista? Si: 1, No: 0” Leer RES7. {Fin del ciclo del paso 6}Crea_final{Este algoritmo permite crear una lista simplemente ligada, agregando cada nuevo final dela misma}{P, Q y T son variables de tipo apuntador. Los campos del nodo son INFO, que será del tipo de datos que se quiera almacenar en la lista, y LIGA de tipo apuntador. P apunta alinicio de lista. RES es una variable de tipo entero}Crear (P) {Se crea el primer nodo de la lista)Leer P^.INFOHacer P^.LIGA <- NULO y T <- PEscribir “¿Desea ingresar mas nodos a la lista? Si: 1, No: 0”Leer RESMientras (RES = 1) Repetir Crear (Q) Leer Q^.INFO Hacer Q^.LIGA <- NULO, T^.LIGA <- Q y T<- Q { T apunta alúltimo nodo} Escribir “¿Desea ingresar más nodos a la lista? Sí = 1, No = 0"
  5. 5. Leer RES7. {Fin del ciclo del paso 6} Recorrido de una lista simplemente ligadaLa operación de recorrido en una lista simplemente ligada consiste envisitar cada uno de los nodos que forman la lista. La visita puedeimplicar una operación simple; por ejemplo, imprimir la información delnodo, o una compleja, dependiendo del problema que se intenteresolver.Para recorrer todos los nodos de una lista simplemente ligada secomienza con el primero. Se toma el valor del campo LIGA de éste yse avanza al segundo, y así sucesivamente hasta llegar al últimonodo, cuyo campo LIGA tiene el valor NULO. En general, la direcciónde un nodo, excepto el primero, está dada por el campo LIGA de supredecesor.Recorre_Iterativo (P){Éste algoritmo recorre una lista cuyo primer nodo esta apuntado por P}{Q es una variable de tipo apuntador. INFO y LIGA son los campos de cada nodo de lalista}1. Hacer Q <- P2. Mientras (Q ≠ NULO) Repetir Escribir Q^.INFO Hacer Q <- Q^.LIGA {Apunta al siguiente nodo de la lista}3. {Fin del ciclo del paso 2}Las listas se pueden manejar fácilmente con procesos recursivos. Elalgoritmo siguiente constituye una versión recursiva para recorrer unalista simplemente ligada.Recorre_recursivo (F){Este algoritmo recorre una lista simplemente ligada en forma recursiva. P es un apuntadoral nodo que se va a visitar. La primera vez trae la dirección del primer nodo de la lista}{INFO y LIGA son los campos de cada nodo de la lista}1. Si P ≠ NULO entonces Escribir P^.INFO
  6. 6. Llamar a Recorre_recursivo con P^.LIGA {Llamada recursiva con elapuntador al siguiente nodo de la lista}2, {Fin del condicional del paso 1} Inserción en listas simplemente ligadasLa operación de inserción en listas simplemente ligadas consiste enagregar un nuevo nodo a la lista. Sin embargo, dependiendo de laposición en la que se deba insertar el nodo, se pueden presentardiferentes casos, como los que se señalan a continuación • Insertar un nodo al inicio de la lista. • Insertar un nodo al final de la lista. • Insertar un nodo antes que otro cuya información es X. • Insertar un nodo después que otro cuya información es X.Siendo evaluados los dos primeros, por ser los más comunes. a) Inserción al inicio de una lista simplemente ligadaInserta_Inicio(P, DATO){Este algoritmo inserta al inicio de una lista simplemente ligada. P es el apuntador alprimer nodo de la misma, y DATO es la información que se almacenará en el nuevo nodo}{Q es una variable de tipo apuntador, INFO y LIGA son los campos de cada nodo de lalista}1. Crea (Q)2. Hacer Q^.INFO <- DATO, Q^.LIGA <- P y P <- Q b) Inserción al final de una lista simplemente ligadaInserta_Final(P, DATO)Este algoritmo inserta un nodo al final de una lista simplemente liga. P es el apuntador alprimer nodo de la lista, y DATO es la información que se almacenará en el nuevo nodo}{Q y T son variables de tipo apuntador, INFO y LIGA son los campos de cada nodo de lalista}1. Hacer T <- P2. Mientras ( T^.LIGA ≠ NULO ) repetir {Recorre la lista hasta llegar al último elemento} Hacer T <- T^.LIGA3. {Fin del ciclo del paso 2}
  7. 7. 4. Crea (Q)2. Hacer Q^.INFO <- DATO, Q^.LIGA <- NULO y T^.LIGA <- Q Eliminación en listas simplemente ligadasLa operación de eliminación en las listas simplemente ligadasconsiste en eliminar un nodo de la lista y liberar el espacio de memoriacorrespondiente. Dependiendo de la posición en la que éste seencuentre, se pueden presentar diferentes casos, como los que seseñalan a continuación: • Eliminar el primer nodo. • Eliminar el último nodo. • Eliminar un nodo con información X • Eliminar el nodo anterior al nodo con información X • Eliminar el nodo posterior al nodo con información XCabe destacar que en los algoritmos que se presentarán acontinuación no se considera que la lista esté vacía. Esta condición sepuede evaluar fácilmente al inicio del algoritmo o bien en el programaprincipal.Por ser los más comunes, se evaluaran los primeros tres algoritmos. Eliminar el primer nodo de la lista simplemente ligada.Elimina_Inicio(P){Este algoritmo permite eliminar el primer elemento de una lista simplemente ligada. P esel apuntador al primer elemento de la lista} {Q es una variable de tipo a puntador, INFO yLIGA son los campos de los nodos de la lista}1. Hacer Q <- P {Si la lista tuviera sólo un elemento entonces a P se le asignaría NULO, que es el valorde Q^.LIGA. En caso contrario, queda con la dirección del siguiente elemento}2. Hacer P <- Q^.LIGA {Redefine el puntero al inicio de la lista}3. Quitar(Q) Elimina el último nodo de la lista simplemente ligadaElimina_Ultimo(P){Este algoritmo elimina el último nodo de la una lista simplemente ligada. P es elapuntador al primer nodo de la lista}{Q y P son variables de tipo apuntador. INFO y LIGA son los campos de los nodos de lalista}1. Hacer Q <- P
  8. 8. 2. Si (P^.LIGA = NULO) {Se verifica si la lista tiene sólo un nodo} entonces Hacer P <- NULO si no 2.2. Mientras (Q^.LIGA ≠ NULO) repetir Hacer T <- Q y Q <- Q^.LIGA 2.3. {Fin del ciclo del paso 2.1}3. {Fin del condicionante del paso 2}4. Quitar(Q) Eliminar un nodo con información X de una lista simplemente ligadaElimina_X{Este algoritmo permite elimina un nodo con información X de una lista simplementeligada. P es el apuntador al primer nodo de la lista}{Q y T son variables de tipo apuntador. BAND es una variable de tipo entero. INFO y LIGAson los campos de los nodos de la lista}1. Hacer Q <- P y BAND <- 12. Mientras ((Q^.INFO ≠ X ) y (BAND = 1)) repetir 2.1 si Q^.LIGA ≠ NULO entonces Hacer T <- Q y Q <- Q^.LIGA si no Hacer BAND <- 0 2.2 {Fin del condicionante del paso 2.1}3. {Fin del ciclo del paso 2}4. Si (BAND = 0) entonces Escribir “El elemento con información X no se encuentra enla lista” si no 4.1 Si (P = Q) {Se verifica si el elemento a eliminar es el primero} Entonces Hacer P <- Q^.LIGA si no Hacer T^.LIGA <- Q^.LIGA 4.2 {Fin del condicional del paso 4.1} Quitar (Q)5. {Fin del condicional del paso 4} Búsqueda en listas simplemente ligadas
  9. 9. La operación de búsquedas de un elemento en una lista simplementeligada es muy fácil de realizar, aunque infidente ya que se lleva a cabode forma secuencial. Se debe ir recorriendo los nodos hasta encontrarel que estamos buscando o hasta que se llegue al final de la lista. Elalgoritmo es similar a los que se desarrollaron para recorrer una listaen forma iterativa o recursiva.Al igual que en el caso de las operaciones vistas anteriormente,existen deficiencias en los algoritmos si las listas se encuentranordenadas o desordenadas. Se comenzará, en primer término, con elalgoritmo de búsqueda par listas simplemente ligadas que seencuentran desordenadas.Búsqueda_Desordenada(P,X){Este algoritmo permite buscar el elemento con la información X enuna lista simplemente ligada que se encuentra desordenada. P es unavariable de tipo apuntador, señalando al primer nodo}{Q es una variable tipo apuntador. INFO y LIGA son campos de losnodos de la lista}1. Hacer Q <- P2. Mientras ((Q ≠ NULO) y (Q^.INFO ≠ X)) repetir Hacer Q <- Q^.LIGA3. {Fin del ciclo del paso 2}4. Si (Q = NULO) entonces Escribir “El elemento no se encuentra en la lista” si no Escribir “El elemento si se encuentra en la lista”5. {Fin del condicionante del paso 4}Es importante destacar que con una simple modificación en lacodificación del ciclo del paso 2 se adapte este algoritmo para labúsqueda de elementos en la lista simplemente ligada que seencuentran ordenados. A continuación se presentan el algoritmo debúsqueda en listas simplemente ligadas ordenadas en formaascendente.Búsqueda_Ordenada(P,X){Este algoritmo permite buscar el elemento con la información X en una lista simplementeligada que se encuentra ordenada de forma ascendente. P es una variable de tipo
  10. 10. apuntador, señalando al primer nodo}{Q es una variable tipo apuntador. INFO y LIGA son campos de los nodos de la lista}1. Hacer Q <- P2. Mientras ((Q ≠ NULO) y (Q^.INFO < X)) repetir Hacer Q <- Q^.LIGA3. {Fin del ciclo del paso 2}4. Si ((Q = NULO) o (Q^.INFO > X)) entonces Escribir “El elemento no se encuentra en la lista” si no Escribir “El elemento si se encuentra en la lista”5. {Fin del condicionante del paso 4}Todos los algoritmos presentados tanto en la búsqueda, inserción yeliminación se pueden implementar de forma recursiva. A continuaciónse muestra una versión recursiva del algoritmo de búsquedadesordenada.Busqueda_Recursiva(P,X){Este algoritmo permite buscar recursivamente a un elemento coninformación X en una lista simplemente ligada que se encuentredesordenad. P es el apuntador al primer nodo de la lista}1. Si (P ≠ NULO) entonces 1.1 Si (P^.INFO = X) entonces Escribimos “El elemento se encuentra en la lista” si no Llamar a Busqueda_Recursivo con P^.LIGA y X 1.2 {Fin del condicionante del paso 1.1} si no Escribir “El elemento no se encuentra en la lista";2. {Fin del condicionante del paso 1}Listas ligadasEn las secciones anteriores se contemplaron diferentes estructuras estáticas en dónde lamanipulación de datos es a través de posiciones localizadas secuencialmente. Para declarar estas estructuras se debía definir un tamaño determinado el cual no podíamodificarse posteriormente. Esto puede ser un problema en el caso de que:
  11. 11. • no sepamos de antemano el tamaño requerido para nuestra aplicación • hay una gran cantidad de operaciones y manipulaciones de los datos dentro de las estructurasEn estos casos es generalmente m&a acute;s conveniente utilizar estructuras dinámicas,es decir, las cuales pueden aumentar o disminuir de tamaño de acuerdo a losrequerimientos específicos del procedimiento. Así se resuelve el problema de no saberel tama&ntild e;o exacto desde un principio y las manipulaciones de datos se puedenhacer de una manera mas rápida y eficiente.Una lista ligada es entonces un grupo de datos organizados secuencialmente, pero adiferencia de los arreglos, la organización no esta dada implícitamente por su posiciónen el arreglo. En una lista ligada cada elemento es un nodo que contiene el dato yademás una liga al siguiente dato. Estas ligas son simplemente variables que contienenla(s) dirección(es) de los datos contiguos o relacionados.Para manejar una lista es necesario contar con un apuntador al primer elemento de lalista "head" .Las ventajas de las listas ligadas son que: • Permiten que sus tamaños cambien durante la ejecución del programa • Proveen una major flexibilidad en el manejo de los datos.Este principio de listas ligadas se puede aplicar a cualquiera de los conceptos deestructura de datos vistos anteriormente: arreglos, colas y pilas . Es decir, lasoperaciones de altas, bajas y cambios, así como búsquedas y ordenamientos se tendránque adaptar en la cuestión del manejo de localidades únicamente.Listas ligadas sencillasUna lista ligada sencilla es un grupo de datos en dónde cada dato contiene además unapuntador hacia el siguiente dato en la lista, es decir, una liga hacia el siguiente dato.Los siguientes algoritmos fueron tomados de "Estructuras de Datos", Cairó - Guardati,2a. Ed., McGraw Hill, 2002.Algoritmo 5.1CREAINICIO(P){Este algoritmo crea una lista, agregando cada nuevo nodo al inicio dela misma}{ P y Q son variables de tipo puntero. P apuntará al inicio de lalista} 1. CREA (P) {Crea el primer nodo de la lista} 2. Leer P->INFORMACIÓN 3. Hacer P->LIGA=NIL 4. Repetir CREA (Q) Leer Q->INFORMACIÓN Hacer Q->LIGA= P y P = Q 5. Hasta (que ya no haya información)
  12. 12. Algoritmo 5.2CREAFINAL(P){Este algoritmo crea una lista, agregando cada nuevo nodo al final dela misma}{P y Q son variables de tipo puntero. P apuntará al inicio de lalista} 1. CREA (P) {Crea el primer nodo de la lista} 2. Leer P->INFORMACIÓN 3. Hacer P->LIGA=NIL y T=P 4. Repetir CREA (Q) Leer Q->INFORMACIÓN Hacer Q->LIGA=NIL, T->LIGA=Q y T=Q 5. Hasta (que ya no haya información)Para poder dar de alta un dato en una lista ligada sencilla es necesario recorrer la listanodo por nodo hasta encontrar la posición adecuada. Se crea un nuevo nodo, se insertael dato y se actualizan las ligas del nodo nuevo y del anterior para intercalar el nuevonodo en la lista.Algoritmo 5.3RECORREITERATIVO(P){Este algoritmo recorre una lista cuyo primer nodo está apuntado porP}{Q es una variable de tipo puntero} 1. Hacer Q = P 2. Repetir mientras Q =! NIL Escribir Q->INFORMACUÓN Hacer Q=Q->LIGA {Apunta al siguiente nodo de la lista} 3. {Fin del ciclo del paso 2}Algoritmo 5.4RECORRECURSIVO(P){Este algoritmo recorre una lista recursivamente. P es el apuntadoral nodo a visitar} 1. Si P =! NIL entonces Escribir P->INFORMACIÓN Llamar a RECORRECURSIVO con P->LIGA {Llamada recursiva con el apuntador al siguiente nodode la lista} 2. {Fin del condicional del paso 1}Algoritmo 5.6INSERTAFINAL(P){Este algoritmo inserta un nodo al final de la lista. P es elapuntador al primer nodode la lista, y DATO es la información que se almacenará en el nuevonodo}{Q y T son variables de tipo puntero}
  13. 13. 1. Hacer T= P 2. Repetir mientras T ->Liga =! NIL {Recorre la lista hasta llegar al último elemento} Hacer T=T->LIGA 3. {Fin del ciclo del paso 2} 4. CREA (Q) 5. Hacer Q->INFORMACIÓN =DATO, Q->LIGA =NIL y T ->LIGA =QAlgoritmo 5.7INSERTANTES ( P, DATO, REF ){Este algoritmo inserta un nodo dado como referencia, REF. P es elapuntador alprimer nodo de la lista, y DATO es la información que se almacenará enel nuevo nodo}{Q, X y T son variables de tipo puntero, BAND es una variable de tipobooleano} 1. Hacer Q= P y BAND= VERDADERO 2. Repetir mientras (Q->INFORMACIÓN =! REF) y (BAND =VERDADERO) 2.1 Si Q -> LIGA =! NIL Entonces Hacer T= Q y Q= Q-> LIGA Si no Hacer BAND = FALSO 2.2 {Fin del condicional del paso 2.1} 3. {Fin del ciclo del paso 2} 4. Si BAND = VERDADERO entonces CREA(X) Hacer X->INFORMACIÓN = DATO 4.1 Si P = Q {Es el primer nodo} Entonces Hacer X ->LIGA = P y P = X Si no Hacer T ->LIGA =X y X ->LIGA = Q 4.2 {Fin del condicional del paso 4.1} 5. {Fin del condicional del paso 4}Algoritmo 5.9ELIMINAPRIMERO(P){Este algoritmo borra el primer elemento de una lista. P es elapuntador al primer nodo de la lista}{Q es una variable de tipo puntero} 1. Hacer Q = P 2. Si Q -> LIGA =! NIL {Verifica si la lista tiene sólo unnodo} Entonces Hacer P= Q-> LIGA {Redefine el puntero alinicio} Si no Hacer P = NIL 3. {Fin del condicional del paso2} 4. QUITA(Q)
  14. 14. Algoritmo 5.10ELIMINAÚLTIMO(P){Este algoritmo borra el último elemento de una lista. P es elapuntador al primer nodo de la lista}{Q y T son variables de tipo puntero} 1. Si P -> LIGA = NIL {Verifica si la lista tiene sólo unelemento} Entonces QUITA(P) Hacer P = NIL Si no Hacer Q = P 1.1 Repetir mientras ( Q->LIGA =! NIL) Hacer T=Q y Q = Q -> LIGA 1.2 {Fin del ciclo del paso 1.1} Hacer T -> LIGA = NIL QUITA(Q) 2. {Fin del condicional del paso 1}Algoritmo 5.11ELIMINAX( P, X ){Este algoritmo elimina un nodo con información X de una lista. P esel apuntador al primer nodo de la lista}{Q y T son variables de tipo puntero. BAND es una variable de tipobooleano} 1. Hacer Q = P y BAND= VERDADERO 2. Repetir mientras (Q->INFORMACIÓN =! X) y (BAND =VERDADERO) 2.1 Si Q ->LIGA =! NIL Entonces Hacer T = Q y Q = Q -> LIGA Si no Hacer BAND = FALSO 2.2 {Fin del condicional del paso 2.1} 3. {Fin del ciclo del paso 2} 4. Si BAND = FALSO Entonces Escribir ”El elemento no fue encontrado” Si no 4.1 SI P = Q {Verifica si el elemento a eliminares el primero} Entonces Hacer P = Q->LIGA Si no Hacer T -> LIGA=Q-> LIGA 4.2 {Fin del condicional del paso 4.1} QUITA(Q) 5. {Fin del condicional del paso 4}Algoritmo 5.15BUSCARRECURSIVO(P,X)
  15. 15. {Este algoritmo busca recursivamente al elemento con información X enuna lista que se encuentra desordenada. P es el apuntador del nodo avisitar} 1. Si ( P =! NIL) Entonces 1.1 Si ( P ->INFORMACIÓN = X ) Entonces Escribir “El elemento se encuentra en lalista” Si no Llamar a BUSCARRECURSIVO con P -> LIGAy X 1.2 {Fin del condicional del paso 1.1} Si no Escribir “El elemento no se encuentra enla lista” 2. {Fin del condicional del paso 1}

×