Professional Documents
Culture Documents
LISTAS.
NEIR NELO.
C.I; 17.992.474
PROCESAMIENTO DE DATOS.
FEBRERO, 2014
ÍNDICE.
INTRODUCCIÓN. 2
Listas (Como estructura de datos). 3
Características. 5
Tipos de listas. 6
Tipos de listas enlazadas 6
Listas enlazadas lineales 6
Listas simples enlazadas 6
Listas doblemente enlazadas 6
Listas enlazadas circulares. 6
Listas enlazadas simples circulares. 7
Listas enlazadas doblemente circulares. 7
Usos de listas. 7
Listas simples. 7
Listas enlazadas. 7
Listas circulares 8
Operaciones con listas: creación, inserción, supresión. 8
Operaciones sobre listas enlazadas. 8
CONCLUSIÓN. 12
REFERENCIAS. 13
INTRODUCCIÓN.
La presente investigación se refiere al tema de listas sobre estructura de datos en las cuales
podemos definirlas de una manera simple como las listas son una sucesión de cero o más
elementos.
Esta es una definición muy simple y que no aclara demasiado en términos informáticos, así
que profundizaremos un poco más.
Hay varios tipos de listas, las hay enlazadas, no enlazadas, ordenadas y no ordenadas.
Nosotros vamos a estudiar las listas enlazadas, tanto ordenadas como no ordenadas.
La diferencia que existe entre las listas enlazadas y las no enlazadas es que las enlazadas
utilizan punteros, es decir, asignación dinámica de memoria, lo que optimiza la gestión de
la misma. Una lista no enlazada es un simple array, y por lo tanto es un bloque contiguo de
memoria, mientras que una lista enlazada es un conjunto de nodos que no tienen porque
ocupar posiciones contiguas de memoria.
Una lista es una sucesión de nodos en la que a partir de un nodo se puede acceder al que
ocupa la siguiente posición en la lista. Esta característica nos indica que el acceso a las
listas es secuencial y no indexado, por lo que para acceder al último elemento de la lista hay
que recorrer los n-1 elementos previos ( n es el tamaño de la lista).
LISTAS (COMO ESTRUCTURA DE DATOS).
Las listas enlazadas fueron desarrolladas en 1955-56 por Cliff Shaw y Herbert
Simon 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”.
LISP, el principal procesador de listas, fue creado en 1958. Una de las mayores
estructuras de datos de LISP es la lista enlazada.
En torno a los 60, la utilidad de las listas enlazadas y los lenguajes que utilizaban
estas estructuras como su principal representación de datos estaba bien establecida. Bert
Green, del Lincoln Laboratory del MIT, publicó un estudio titulado Computer languages
for symbol manipulation en IRE Transaction on Human Factors in Electronics en marzo de
1961 que resumía las ventajas de las listas enlazadas. Un posterior artículo, A Comparison
of list-processing computer languages de Bobrow y Raphael, aparecía enCommunications
of the ACM en abril de 1964.
El sistema operativo TSS, desarrollado por IBM para las máquinas System 360/370,
usaba una lista doblemente enlazada para su catálogo de ficheros de sistema. La estructura
de directorios era similar a Unix, donde un directorio podía contener ficheros u otros
directorios que se podían extender a cualquier profundidad. Una utilidad fue creada para
arreglar problemas del sistema después de un fallo desde las porciones modificadas del
catálogo de ficheros que estaban a veces en memoria cuando ocurría el fallo. Los
problemas eran detectados por comparación de los enlaces posterior y anterior por
consistencia. Si el siguiente de ellos era corrupto y el anterior enlace del nodo infectado era
encontrado, el enlace posterior era asignado al nodo marcado con el enlace anterior.
Características.
El orden lógico se representa de tal forma que cada elemento apunta al siguiente
elemento, es decir, se encuentran ligados.
Tipos de listas.
La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo.
Este enlace apunta al siguiente nodo (o indica que tiene la dirección en memoria del
siguiente nodo) en la lista, o al valor NULL o a la lista vacía, si es el último nodo.
En algún lenguaje de muy bajo nivel, XOR-Linking ofrece una vía para
implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces,
aunque esta técnica no se suele utilizar.
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.
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.
Usos de listas.
Las listas se utilizan para organizar información. Pueden estar incluidas dentro de
un artículo, o conformar un anexo independiente.
Listas simples.
La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo.
Este enlace apunta al siguiente nodo (o indica que tiene la dirección en memoria del
siguiente nodo) en la lista, o al valor NULL o a la lista vacía, si es el último nodo.
Listas enlazadas.
Una lista enlazada o estructura ligada, es una estructura lineal que almacena una
colección de elementos generalmente llamados nodos, en donde cada nodo puede
almacenar datos y ligas a otros nodos. De esta manera los nodos pueden localizarse en
cualquier parte de la memoria, utilizando la referencia que lo relaciona con otro nodo
dentro de la estructura.
Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar datos
que están cambiando constante mente. A diferencia de los vectores, las estructuras
dinámicas se expanden y se contraen haciéndolas más flexibles a la hora de añadir o
eliminar información.
Listas 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.
record Node {
record List {
Node PrimerNodo // Apunta al primer nodo de la lista; nulo para la lista vacía
node := list.PrimerNodo
node := node.next
}
El siguiente código inserta un elemento a continuación de otro en una lista simple.
El diagrama muestra cómo funciona.
newNode.next := node.next
node.next := newNode
Insertar al principio de una lista requiere una función por separado. Se necesita
actualizar PrimerNodo.
newNode.next := list.firstNode
list.firstNode := newNode
De forma similar, también tenemos funciones para borrar un nodo dado ó para
borrar un nodo del principio de la lista. Ver diagrama.
function removeAfter(Node node) {
obsoleteNode := node.next
node.next := node.next.next
destroy obsoleteNode
obsoleteNode := list.firstNode
list.firstNode := list.firstNode.next
destroy obsoleteNode
Como conclusión del presente trabajo de investigación sobre listas como estructuras de
datos, es importante mencionar que las listas son una de las estructuras de
datos fundamentales, y puede ser usada para implementar otras estructuras de datos.
Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y
una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio
de las listas enlazadas respecto a los vectores convencionales es que el orden de los
elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el
disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este
enlace apunta al siguiente nodo (o indica que tiene la dirección en memoria del siguiente
nodo) en la lista, o al valor NULL o a la lista vacía, si es el último nodo.
Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar datos que
están cambiando constante mente. A diferencia de los vectores, las estructuras dinámicas se
expanden y se contraen haciéndolas más flexibles a la hora de añadir o eliminar
información.
Las listas enlazadas permiten almacenar información en posiciones de memoria que no sean
contiguas; para almacenar la información contienen elementos llamados nodos. Estos nodos
poseen dos campos uno para almacenar la información o valor del elemento y otro para el
enlace que determina la posición del siguiente elemento o nodo de la lista.
REFERENCIAS.
http://es.wikipedia.org/wiki/Lista_(inform%C3%A1tica)
http://www.monografias.com/trabajos10/esda/esda.shtml