SlideShare una empresa de Scribd logo
1 de 10
LISTAS
Las listas enlazadas son estructuras de datos semejantes a los array salvo que el acceso a un elemento no se hace
mediante un indice sino mediante un puntero.


La asignación de memoria es hecha durante la ejecución.




Listas simples enlazadas

La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al
siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo.



Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo




Lista Doblemente Enlazada

Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías.
Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y
otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo.



Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al anterior

Listas enlazadas circulares

En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para
listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular
podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el
nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin
comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para visitar
todos los nodos de una lista a partir de uno dado.




Una lista enlazada circular que contiene tres valores enteros




Listas Enlazadas vs. Vectores o Matrices
Las listas enlazadas poseen muchas ventajas sobre los arrays. Los elementos se pueden insertar en una lista
indefinidamente mientras que un array tarde o temprano se llenará ó necesitará ser redimensionado, una
costosa operación que incluso puede no ser posible si la memoria se encuentra fragmentada.

En algunos casos se pueden lograr ahorros de memoria almacenando la misma „cola‟ de elementos entre dos
o más listas – es decir, la lista acaba en la misma secuencia de elementos. De este modo, uno puede añadir
nuevos elementos al frente de la lista manteniendo una referencia tanto al nuevo como a los viejos elementos
- un ejemplo simple de una estructura de datos persistente.

Por otra parte, los arrays permiten acceso aleatorio mientras que las listas enlazadas sólo permiten acceso
secuencial a los elementos. Las listas enlazadas simples, de hecho, solo pueden ser recorridas en una
dirección. Esto hace que las listas sean inadecuadas para aquellos casos en los que es útil buscar un
elementos por su índice rápidamente, como el heapsort. El acceso secuencial en los arrays también es más
rápido que en las listas enlazadas.

Otra desventaja de las listas enlazadas es el almacenamiento extra necesario para las referencias, que a
menudos las hacen poco prácticas para listas de pequeños datos como caracteres o valores booleanos.

También puede resultar lento y abusivo el asignar memoria para cada nuevo elemento. Existe una variedad
de listas enlazadas que contemplan los problemas anteriores para resolver los mismos. Un buen ejemplo que
muestra los pros y contras del uso de arrays sobre listas enlazadas es la implementación de un programa que
resuelva el problema de Josephus. Este problema consiste en un grupo de personas dispuestas en forma de
círculo. Se empieza a partir de una persona predeterminadas y se cuenta n veces, la persona n-ésima se saca
del círculo y se vuelve a cerrar el grupo. Este proceso se repite hasta que queda una sola persona, que es la
que gana. Este ejemplo muestra las fuerzas y debilidades de las listas enlazadas frente a los arrays, ya que
viendo a la gente como nodos conectados entre sí en una lista circular se observa como es más fácil suprimir
estos nodos. Sin embargo, se ve como la lista perderá utilidad cuando haya que encontrar a la siguiente
persona a borrar. Por otro lado, en un array el suprimir los nodos será costoso ya que no se puede quitar un
elemento sin reorganizar el resto. Pero en la búsqueda de la n-ésima persona tan sólo basta con indicar el
índice n para acceder a él resultando mucho más eficiente.




                                           LISTAS SIMPLES
La forma más simple de estructura dinámica es la lista Simple. En esta forma los nodos se organizan de
modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente
vale NULL.




En las listas abiertas existe un nodo especial: el primero. Normalmente diremos que nuestra lista es un
puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista. Eso es porque mediante ese único
puntero podemos acceder a toda la lista.

Cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista está vacía.




TIPS!!!!!!!!!!!!!!!!!!!!!!!
       Sólo hay un modo de moverse a través de una lista
       Simple……hacia delante!!.
       El primer elemento es el más accesible, ya que es a
       ese a que apunta el puntero que define la lista. Para
       obtener un puntero al primer elemento bastará con
       copiar el puntero Lista.
       Supongamos que tenemos un puntero nodo que
       señala a un elemento de una lista. Para obtener un
       puntero al siguiente bastará con asignarle el campo
       "siguiente" del nodo, nodo->siguiente.
       Ya hemos dicho que no es posible retroceder en una
       lista, de modo que para obtener un puntero al nodo
       anterior a uno dado tendremos que partir del
       primero, e ir avanzando hasta que el nodo siguiente
       sea precisamente el nodo buscado.
       Para obtener un puntero al último elemento de una
       lista partiremos de un nodo cualquiera, por ejemplo el
primero, y avanzaremos hasta que su nodo siguiente
       sea NULL.
       Basta con comparar el puntero Lista con NULL, si Lista
       vale NULL la lista está vacía.
       El algoritmo genérico para borrar una lista completa
       consiste simplemente en borrar el primer elemento
       sucesivamente mientras la lista no esté vacía.


Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar:

       Añadir o insertar elementos.
       Buscar o localizar elementos.
       Borrar elementos.
       Moverse a través de una lista, siguiente, primero.

Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un
nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.
DEFINICION
El nodo típico para construir listas tiene esta forma:

Clase NodosLista
Inicio
       Object datos;
       NodosLista siguiente;

       // datos:: que almacena la información // siguiente : Apuntador o enlace a otros nodos

       NodosLista(Object valor)
       Inicio
              datos=valor;//
              siguiente=null;//
       Fin
       //--Constructor Crea un nodo de tipo Object y al siguiente nodo de la lista --//

       NodosLista (Object valor,NodosLista signodo)
       // parámetro valor capturado en método principal y signodo para ligar el puntero a la ultima posición
       Inicio
                datos=valor;// Se asigna el valor digitado en el campo de datos
                siguiente=signodo; //siguiente se refiere al siguiente nodo
       Fin

       //Retorna el dato que se encuentra en ese nodo
       Object getObject()
       Inicio
              return datos;
       Fin

       //Retorna el siguiente nodo
       NodosLista getnext()
       Inicio
              return siguiente;
       Fin
Fin
NodosLista es el tipo para declarar listas, como puede verse, un puntero a un nodo y una lista son la misma cosa. En
realidad, cualquier puntero a un nodo es una lista, cuyo primer elemento es el nodo apuntado.
DEFINICION DE LA CLASE LISTA

clase ListaSimple

inicio

         NodosLista PrimerNodo;// se define el primer nodo de la lista

         NodosLista UltimoNodo;// se define el ultimo nodo de la lista

         String Nombre;// variable de tipo string para almacenar dato




                                       METODOS ASOCIADOS


METODO PARA DETERMINAR SI UNA LISTA ESTA VACIA

publico booleano VaciaLista()

Inicio

         Retornar PrimerNodo ==null; // si el primer nodo apunta a null esta vacia

fin




METODO PARA INSERTAR UN NODO EN UNA LISTA VACIA

Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto
un puntero que apunte a la lista valdrá NULL:

publico ListaSimple(cadena s) // el valor que se captura en menú para el primer nodo
inicio
              Nombre=s;
              PrimerNodo=UltimoNodo=null;
                // tanto el primero como ultimo se apunta a null esto determina unico dato capturado en S pero se para a var Nombre
Fin


Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso
anterior la lista es una lista vacía, pero siempre podemos, y debemos considerar una lista vacía como una
lista.
METODO PARA INSERTAR UN NODO AL PRINCIPIO DE UNA LISTA



De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no
vacía:

El proceso sigue siendo muy sencillo:

      1. Hacemos que el nodo->siguiente apunte a Lista.
      2. Hacemos que Lista apunte a nodo.




Publico InsertaInicio(Object ElemInser)

Inicio

         Si(VaciaLista()) // se verifica contenido en la lista

                PrimerNodo=UltimoNodo=new NodosLista(ElemInser);

                sino

                        PrimerNodo=new NodosLista(ElemInser, PrimerNodo);

Fin

Nota: Ojo con la definición de los nodos y verificar los parámetros, incentivo para el estudiante que identifique lo
sucedido en el método insertar al inicio.
METODO PARA INSERTAR UN NODO AL FINAL DE UNA LISTA
Este es otro caso especial. Para este caso partiremos de una lista no vacía:




El proceso en este caso tampoco es excesivamente complicado:

    1. Necesitamos un puntero que señale al último elemento de la lista. Se nombro al inicio de la clase un
       nodo con el nombre de UltimoNodo.
    2. Hacer que nodo->siguiente sea NULL.
    3. Hacer que ultimo->siguiente sea nodo.




publico InsertaFinal(Object ElemInser)
Inicio
         si(VaciaLista()) // se verifica contenido en la lista

                          PrimerNodo= UltimoNodo = new NodosLista (ElemInser);
                 sino
                    UltimoNodo=UltimoNodo.siguiente=new NodosLista(ElemInser);
        Fin Si
Fin Método
METODO PARA RECORRER Y MOSTRAR LOS ELEMENTOS DE UNA LISTA




Se indico que las listas simples elaboran el recorrido desde el principio de la lista al final de la misma, por lo cual se
crea un nodo auxiliar llamado Actual que almacena temporalmente el principio de la lista y es el encargado de
realizar dicho recorrido hasta que tenga el valor de null.

Publico Imprimir()
Inicio
        Si (VaciaLista())
        Inicio
                 System.out.println("Vacia" + Nombre);
                 Sino
                          Escriba ("La "+Nombre + " es: ");
                          NodosLista Actual=PrimerNodo;
                          MQ (Actual != null
                                  Escriba (Actual.datos.toString()+" ");
                                  Actual=Actual.siguiente;// se hace referencia al siguiente nodo
                          Fin MQ
        Fin Si
Fin Método
METODO PARA ELIMINAR UN NODO DE UNA LISTA

En todos los demás casos, eliminar un nodo se puede hacer siempre del mismo modo. Supongamos que tenemos
una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar. Y un puntero auxiliar
nodo.

 Hacemos que nodo apunte al nodo que queremos borrar.
Ahora, asignamos como nodo siguiente del nodo anterior,
el siguiente al que queremos eliminar:
anterior->siguiente = nodo->siguiente.




publico EliminaEle(Object ele)
inicio
        NodosLista aux=PrimerNodo;
        NodosLista p=PrimerNodo;
        NodosLista ant=null;
        boolean enc=false;

       MQ ((aux != null) && (enc==false))
       inicio
                 Si (ele.equals(aux.datos))
                        enc=true;
                         sino
                           ant=aux;
                           aux=aux.siguiente;
                 Fin Si
       Fin MQ
       SI (enc==true)
             Si (aux.equals(PrimerNodo))
                      PrimerNodo=aux.siguiente;
                      Sino
                           Si (aux.equals(UltimoNodo))
                                    UltimoNodo=ant;
                                    ant.siguiente=null;
                                    Sino
                                        NodosLista i=aux.siguiente;
                                        aux=ant;
                                        aux.siguiente=i;
                                        PrimerNodo=p;
                           Fin SI
            Fin SI
     Fin Si
Fin Metodo

Más contenido relacionado

La actualidad más candente

Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Insertar elementos en una cola
Insertar elementos en una colaInsertar elementos en una cola
Insertar elementos en una colajeffersoncenteno
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosEmer Gio
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directatavo_3315_
 
Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.xaviercamposm
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Presentacion de Listas, Pilas y Colas
Presentacion de Listas, Pilas y ColasPresentacion de Listas, Pilas y Colas
Presentacion de Listas, Pilas y ColasKate Pros
 

La actualidad más candente (20)

Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Insertar elementos en una cola
Insertar elementos en una colaInsertar elementos en una cola
Insertar elementos en una cola
 
Listas
ListasListas
Listas
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datos
 
Dispersión y tablas hash
Dispersión y tablas hashDispersión y tablas hash
Dispersión y tablas hash
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Presentacion de Listas, Pilas y Colas
Presentacion de Listas, Pilas y ColasPresentacion de Listas, Pilas y Colas
Presentacion de Listas, Pilas y Colas
 
Colas estáticas. IESIT
Colas estáticas. IESITColas estáticas. IESIT
Colas estáticas. IESIT
 
NORMALIZACIÓN
NORMALIZACIÓN  NORMALIZACIÓN
NORMALIZACIÓN
 

Similar a Teoria de listas

Listas c#
Listas c#Listas c#
Listas c#rezzaca
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datosvanessa peñafiel
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IJULIO
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 
Listas en C#
Listas en C#Listas en C#
Listas en C#rezzaca
 
Implementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptxImplementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptxRafael nin
 
Unidad tres estructura de datos
Unidad tres estructura de datosUnidad tres estructura de datos
Unidad tres estructura de datosRené Sosa Arana
 
Unidad Iii
Unidad IiiUnidad Iii
Unidad IiiAna
 
listas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdfLuisAGuarata
 

Similar a Teoria de listas (20)

Listas c#
Listas c#Listas c#
Listas c#
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datos
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{I
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Implementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptxImplementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptx
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Listas
ListasListas
Listas
 
universidad F. T.
universidad F. T.universidad F. T.
universidad F. T.
 
Listas
ListasListas
Listas
 
Lista simple
Lista simpleLista simple
Lista simple
 
Unidad tres estructura de datos
Unidad tres estructura de datosUnidad tres estructura de datos
Unidad tres estructura de datos
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Unidad _ III
Unidad _ IIIUnidad _ III
Unidad _ III
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Unidad Iii
Unidad IiiUnidad Iii
Unidad Iii
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
listas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdf
 
Tda y heaps
Tda y heapsTda y heaps
Tda y heaps
 

Más de Boris Salleg

01. capitulo 2 6 validacion de datos
01. capitulo 2  6 validacion de datos01. capitulo 2  6 validacion de datos
01. capitulo 2 6 validacion de datosBoris Salleg
 
03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminada03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminadaBoris Salleg
 
01. contenido curso internet basico
01. contenido curso internet basico01. contenido curso internet basico
01. contenido curso internet basicoBoris Salleg
 
Contenido curso excel basico
Contenido curso excel basicoContenido curso excel basico
Contenido curso excel basicoBoris Salleg
 
Compromiso academico servicios de internet
Compromiso academico servicios de internetCompromiso academico servicios de internet
Compromiso academico servicios de internetBoris Salleg
 
Compromiso academico excel basico
Compromiso academico excel basicoCompromiso academico excel basico
Compromiso academico excel basicoBoris Salleg
 
Taller #1 institucion educativa las margaritas
Taller #1   institucion educativa las margaritasTaller #1   institucion educativa las margaritas
Taller #1 institucion educativa las margaritasBoris Salleg
 
Introduccion base de datos
Introduccion base de datosIntroduccion base de datos
Introduccion base de datosBoris Salleg
 
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspExplicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspBoris Salleg
 
Conexion bd en java y api necesaria
Conexion bd en java y api necesariaConexion bd en java y api necesaria
Conexion bd en java y api necesariaBoris Salleg
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionBoris Salleg
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completoBoris Salleg
 
Introduccion base de datos con MYSQL
Introduccion base de datos con MYSQLIntroduccion base de datos con MYSQL
Introduccion base de datos con MYSQLBoris Salleg
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jspBoris Salleg
 
Utilizacion de beans en jsp
Utilizacion de beans en jspUtilizacion de beans en jsp
Utilizacion de beans en jspBoris Salleg
 

Más de Boris Salleg (20)

01. capitulo 2 6 validacion de datos
01. capitulo 2  6 validacion de datos01. capitulo 2  6 validacion de datos
01. capitulo 2 6 validacion de datos
 
03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminada03. prueba de conocimiento inicial excel basico terminada
03. prueba de conocimiento inicial excel basico terminada
 
01. contenido curso internet basico
01. contenido curso internet basico01. contenido curso internet basico
01. contenido curso internet basico
 
Contenido curso excel basico
Contenido curso excel basicoContenido curso excel basico
Contenido curso excel basico
 
Compromiso academico servicios de internet
Compromiso academico servicios de internetCompromiso academico servicios de internet
Compromiso academico servicios de internet
 
Compromiso academico excel basico
Compromiso academico excel basicoCompromiso academico excel basico
Compromiso academico excel basico
 
Taller #1 institucion educativa las margaritas
Taller #1   institucion educativa las margaritasTaller #1   institucion educativa las margaritas
Taller #1 institucion educativa las margaritas
 
Arboles
ArbolesArboles
Arboles
 
Introduccion base de datos
Introduccion base de datosIntroduccion base de datos
Introduccion base de datos
 
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspExplicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
 
Conexion bd en java y api necesaria
Conexion bd en java y api necesariaConexion bd en java y api necesaria
Conexion bd en java y api necesaria
 
Condicionales
CondicionalesCondicionales
Condicionales
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
 
Introduccion base de datos con MYSQL
Introduccion base de datos con MYSQLIntroduccion base de datos con MYSQL
Introduccion base de datos con MYSQL
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jsp
 
Utilizacion de beans en jsp
Utilizacion de beans en jspUtilizacion de beans en jsp
Utilizacion de beans en jsp
 
Practica eventos
Practica eventosPractica eventos
Practica eventos
 
Clase event
Clase eventClase event
Clase event
 

Último

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 

Último (20)

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 

Teoria de listas

  • 1. LISTAS Las listas enlazadas son estructuras de datos semejantes a los array salvo que el acceso a un elemento no se hace mediante un indice sino mediante un puntero. La asignación de memoria es hecha durante la ejecución. Listas simples enlazadas La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo. Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo Lista Doblemente Enlazada Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo. Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al anterior Listas enlazadas circulares En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para visitar todos los nodos de una lista a partir de uno dado. Una lista enlazada circular que contiene tres valores enteros Listas Enlazadas vs. Vectores o Matrices
  • 2. Las listas enlazadas poseen muchas ventajas sobre los arrays. Los elementos se pueden insertar en una lista indefinidamente mientras que un array tarde o temprano se llenará ó necesitará ser redimensionado, una costosa operación que incluso puede no ser posible si la memoria se encuentra fragmentada. En algunos casos se pueden lograr ahorros de memoria almacenando la misma „cola‟ de elementos entre dos o más listas – es decir, la lista acaba en la misma secuencia de elementos. De este modo, uno puede añadir nuevos elementos al frente de la lista manteniendo una referencia tanto al nuevo como a los viejos elementos - un ejemplo simple de una estructura de datos persistente. Por otra parte, los arrays permiten acceso aleatorio mientras que las listas enlazadas sólo permiten acceso secuencial a los elementos. Las listas enlazadas simples, de hecho, solo pueden ser recorridas en una dirección. Esto hace que las listas sean inadecuadas para aquellos casos en los que es útil buscar un elementos por su índice rápidamente, como el heapsort. El acceso secuencial en los arrays también es más rápido que en las listas enlazadas. Otra desventaja de las listas enlazadas es el almacenamiento extra necesario para las referencias, que a menudos las hacen poco prácticas para listas de pequeños datos como caracteres o valores booleanos. También puede resultar lento y abusivo el asignar memoria para cada nuevo elemento. Existe una variedad de listas enlazadas que contemplan los problemas anteriores para resolver los mismos. Un buen ejemplo que muestra los pros y contras del uso de arrays sobre listas enlazadas es la implementación de un programa que resuelva el problema de Josephus. Este problema consiste en un grupo de personas dispuestas en forma de círculo. Se empieza a partir de una persona predeterminadas y se cuenta n veces, la persona n-ésima se saca del círculo y se vuelve a cerrar el grupo. Este proceso se repite hasta que queda una sola persona, que es la que gana. Este ejemplo muestra las fuerzas y debilidades de las listas enlazadas frente a los arrays, ya que viendo a la gente como nodos conectados entre sí en una lista circular se observa como es más fácil suprimir estos nodos. Sin embargo, se ve como la lista perderá utilidad cuando haya que encontrar a la siguiente persona a borrar. Por otro lado, en un array el suprimir los nodos será costoso ya que no se puede quitar un elemento sin reorganizar el resto. Pero en la búsqueda de la n-ésima persona tan sólo basta con indicar el índice n para acceder a él resultando mucho más eficiente. LISTAS SIMPLES
  • 3. La forma más simple de estructura dinámica es la lista Simple. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL. En las listas abiertas existe un nodo especial: el primero. Normalmente diremos que nuestra lista es un puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista. Eso es porque mediante ese único puntero podemos acceder a toda la lista. Cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista está vacía. TIPS!!!!!!!!!!!!!!!!!!!!!!! Sólo hay un modo de moverse a través de una lista Simple……hacia delante!!. El primer elemento es el más accesible, ya que es a ese a que apunta el puntero que define la lista. Para obtener un puntero al primer elemento bastará con copiar el puntero Lista. Supongamos que tenemos un puntero nodo que señala a un elemento de una lista. Para obtener un puntero al siguiente bastará con asignarle el campo "siguiente" del nodo, nodo->siguiente. Ya hemos dicho que no es posible retroceder en una lista, de modo que para obtener un puntero al nodo anterior a uno dado tendremos que partir del primero, e ir avanzando hasta que el nodo siguiente sea precisamente el nodo buscado. Para obtener un puntero al último elemento de una lista partiremos de un nodo cualquiera, por ejemplo el
  • 4. primero, y avanzaremos hasta que su nodo siguiente sea NULL. Basta con comparar el puntero Lista con NULL, si Lista vale NULL la lista está vacía. El algoritmo genérico para borrar una lista completa consiste simplemente en borrar el primer elemento sucesivamente mientras la lista no esté vacía. Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar: Añadir o insertar elementos. Buscar o localizar elementos. Borrar elementos. Moverse a través de una lista, siguiente, primero. Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.
  • 5. DEFINICION El nodo típico para construir listas tiene esta forma: Clase NodosLista Inicio Object datos; NodosLista siguiente; // datos:: que almacena la información // siguiente : Apuntador o enlace a otros nodos NodosLista(Object valor) Inicio datos=valor;// siguiente=null;// Fin //--Constructor Crea un nodo de tipo Object y al siguiente nodo de la lista --// NodosLista (Object valor,NodosLista signodo) // parámetro valor capturado en método principal y signodo para ligar el puntero a la ultima posición Inicio datos=valor;// Se asigna el valor digitado en el campo de datos siguiente=signodo; //siguiente se refiere al siguiente nodo Fin //Retorna el dato que se encuentra en ese nodo Object getObject() Inicio return datos; Fin //Retorna el siguiente nodo NodosLista getnext() Inicio return siguiente; Fin Fin NodosLista es el tipo para declarar listas, como puede verse, un puntero a un nodo y una lista son la misma cosa. En realidad, cualquier puntero a un nodo es una lista, cuyo primer elemento es el nodo apuntado.
  • 6. DEFINICION DE LA CLASE LISTA clase ListaSimple inicio NodosLista PrimerNodo;// se define el primer nodo de la lista NodosLista UltimoNodo;// se define el ultimo nodo de la lista String Nombre;// variable de tipo string para almacenar dato METODOS ASOCIADOS METODO PARA DETERMINAR SI UNA LISTA ESTA VACIA publico booleano VaciaLista() Inicio Retornar PrimerNodo ==null; // si el primer nodo apunta a null esta vacia fin METODO PARA INSERTAR UN NODO EN UNA LISTA VACIA Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a la lista valdrá NULL: publico ListaSimple(cadena s) // el valor que se captura en menú para el primer nodo inicio Nombre=s; PrimerNodo=UltimoNodo=null; // tanto el primero como ultimo se apunta a null esto determina unico dato capturado en S pero se para a var Nombre Fin Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso anterior la lista es una lista vacía, pero siempre podemos, y debemos considerar una lista vacía como una lista.
  • 7. METODO PARA INSERTAR UN NODO AL PRINCIPIO DE UNA LISTA De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía: El proceso sigue siendo muy sencillo: 1. Hacemos que el nodo->siguiente apunte a Lista. 2. Hacemos que Lista apunte a nodo. Publico InsertaInicio(Object ElemInser) Inicio Si(VaciaLista()) // se verifica contenido en la lista PrimerNodo=UltimoNodo=new NodosLista(ElemInser); sino PrimerNodo=new NodosLista(ElemInser, PrimerNodo); Fin Nota: Ojo con la definición de los nodos y verificar los parámetros, incentivo para el estudiante que identifique lo sucedido en el método insertar al inicio.
  • 8. METODO PARA INSERTAR UN NODO AL FINAL DE UNA LISTA Este es otro caso especial. Para este caso partiremos de una lista no vacía: El proceso en este caso tampoco es excesivamente complicado: 1. Necesitamos un puntero que señale al último elemento de la lista. Se nombro al inicio de la clase un nodo con el nombre de UltimoNodo. 2. Hacer que nodo->siguiente sea NULL. 3. Hacer que ultimo->siguiente sea nodo. publico InsertaFinal(Object ElemInser) Inicio si(VaciaLista()) // se verifica contenido en la lista PrimerNodo= UltimoNodo = new NodosLista (ElemInser); sino UltimoNodo=UltimoNodo.siguiente=new NodosLista(ElemInser); Fin Si Fin Método
  • 9. METODO PARA RECORRER Y MOSTRAR LOS ELEMENTOS DE UNA LISTA Se indico que las listas simples elaboran el recorrido desde el principio de la lista al final de la misma, por lo cual se crea un nodo auxiliar llamado Actual que almacena temporalmente el principio de la lista y es el encargado de realizar dicho recorrido hasta que tenga el valor de null. Publico Imprimir() Inicio Si (VaciaLista()) Inicio System.out.println("Vacia" + Nombre); Sino Escriba ("La "+Nombre + " es: "); NodosLista Actual=PrimerNodo; MQ (Actual != null Escriba (Actual.datos.toString()+" "); Actual=Actual.siguiente;// se hace referencia al siguiente nodo Fin MQ Fin Si Fin Método
  • 10. METODO PARA ELIMINAR UN NODO DE UNA LISTA En todos los demás casos, eliminar un nodo se puede hacer siempre del mismo modo. Supongamos que tenemos una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar. Y un puntero auxiliar nodo. Hacemos que nodo apunte al nodo que queremos borrar. Ahora, asignamos como nodo siguiente del nodo anterior, el siguiente al que queremos eliminar: anterior->siguiente = nodo->siguiente. publico EliminaEle(Object ele) inicio NodosLista aux=PrimerNodo; NodosLista p=PrimerNodo; NodosLista ant=null; boolean enc=false; MQ ((aux != null) && (enc==false)) inicio Si (ele.equals(aux.datos)) enc=true; sino ant=aux; aux=aux.siguiente; Fin Si Fin MQ SI (enc==true) Si (aux.equals(PrimerNodo)) PrimerNodo=aux.siguiente; Sino Si (aux.equals(UltimoNodo)) UltimoNodo=ant; ant.siguiente=null; Sino NodosLista i=aux.siguiente; aux=ant; aux.siguiente=i; PrimerNodo=p; Fin SI Fin SI Fin Si Fin Metodo