Professional Documents
Culture Documents
Una lista enlazada es un tipo de dato auto referenciado porque contienen un puntero o
enlace (en inglés link, del mismo significado) a otro dato del mismo tipo. Las listas
enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en
tiempo constante (suponiendo que dicho punto está previamente identificado o localizado),
pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: Lista
Enlazadas Simples, Listas Doblemente Enlazadas, Listas Enlazadas Circulares y Listas
Enlazadas Doblemente Circulares.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como
Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder
a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y
Java, respectivamente, disponen de referencias para crear listas enlazadas.
Las listas enlazadas fueron desarrolladas en 1955-56 por Cliff Shaw y Herbert Simón en
RAND Corporation, como la principal estructura de datos para su Lenguaje de
Procesamiento de la Información (IPL). IPL fue usado por los autores para desarrollar
varios programas relacionados con la inteligencia artificial, incluida la Máquina de la
Teoría General, el Solucionador de Problemas Generales, y un programa informático de
ajedrez. Se publicó en IRE Transactions on Information Theory en 1956, y en distintas
conferencias entre 1957-1959, incluida Proceedings of the Western Joint Computer en 1957
y 1958, y en Information Processing (Procendents de la primera conferencia internacional
del procesamiento de la información de la Unesco) en 1959.
El diagrama clásico actual, que consiste en bloques que representan nodos de la lista con
flechas apuntando a los sucesivos nodos de la lista, apareció en Programming the Logic
Theory Machine, de Newell y Shaw. Newell y Simon fueron reconocidos por el ACM
Turing Award en 1975 por “hacer contribuciones básicas a la inteligencia artificial, a la
psicología del conocimiento humano y al procesamiento de las listas”.
Para que esta estructura sea un TDA lista enlazada, debe tener unos operadores asociados
que permitan la manipulación de los datos que contiene. Los operadores básicos de una
lista enlazada son:
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.
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.
En algún lenguaje de muy bajo nivel, XOR-Licking ofrece una vía para implementar listas
doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta
técnica no se suele utilizar.
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.
Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el
siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos
nodos pueden ser solo eficientemente insertados después de uno que ya tengamos
referenciado. Por esta razón, es usual quedarse con una referencia solamente al último
elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al
principio, y también permite accesos al primer nodo desde el puntero del último nodo. 1
En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la
lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último
y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente
enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con
acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente
enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo
apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una
lista doblemente enlazada.
Nodos Centinelas
A veces las listas enlazadas tienen un nodo centinela (también llamado falso nodo o nodo
ficticio) al principio o al final de la lista, el cual no es usado para guardar datos. Su
propósito es simplificar o agilizar algunas operaciones, asegurando que cualquier nodo
tiene otro anterior o posterior, y que toda la lista (incluso alguna que no contenga datos)
siempre tenga un “primer y último” nodo.
Programa y código
Lo que hace este programa, es que pide el nombre del alumno y tres calificaciones para luego
calcular su promedio. Se puede agregar cualquier cantidad de elementos a la lista.
*/import java.util.*;
String nom;
int calif1;
int calif2;
int calif3;
int op;
do{
nodo.nom = leer.next();
nodo.calif1 = leer.nextInt();
nodo.calif2 = leer.nextInt();
nodo.calif3 = leer.nextInt();
lista.add("Calificación 1:\n"+nodo.calif1);
lista.add("Calificación 2:\n"+nodo.calif2);
lista.add("Calificación 3\n"+nodo.calif3);
op = leer.nextInt();
while(op != 2);
Iterator it = lista2.iterator();
while (it.hasNext()){
System.out.println(it.next()+"");
prom = suma/3;
return prom;
}
Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de
datos del mismo tipo organizados en una sola columna y uno o más renglones.
Los procesos normales con una lista o con sus elementos, incluyen declarar toda la lista,
capturar sus elementos, desplegarlos, realizar operaciones con ellos y mostrar un resultado,
etc.
Web grafía
http://www.calcifer.org
http://es.wikipedia.org
http://linkcode.wordpress.com
QRWD
ORTXHHVWDHQFRORUDPDULOOROHWRFRH[SRQHUDFULVWRIHUORTXHHVWDHQYHUGHDJXVWDYR
HOHMHUFLFLRORYR\DH[SOLFDU\R\YR\DGHFLUODFRQFOXVLyQ
Trabajo de algoritmo y estructura de datos
Nombre:
Tema:
Listas Enlazadas
Profesora:
Meyling Palma
Fecha:
21-03-12