QUE SON LAS ESTRUCTURAS LINEALES - ESTR-ORG

Anuncio
¿QUE SON LAS ESTRUCTURAS LINEALES?
Las estructuras lineales de datos se caracterizan porque sus elementos están en
secuencia,
relacionados en forma lineal, uno luego del otro. Cada elemento de la estructura
puede estar
comformado por uno o varios subelementos o campos que pueden pertenecer a
cualquier tipo de dato, pero que normalmente son tipos básicos. Una estructura
lineal de datos o lista está conformada por ninguno, uno o varios elementos que
tienen una relación de adyacencia ordenada donde existe un primer elemento,
seguido de un segundo elemento y así sucesivamente hasta llegar al último. El
tipo de dato de los elementos puede ser cualquiera, pero debe ser el mismo tipo
para todos. El valor contenido en los elementos puede ser el mismo o diferente.
En estas estructuras se realizan operaciones de agregar y/o eliminar elementos a
la lista según un criterio particular. Sobre la base de la forma y el lugar de la
realización de estas operaciones en la misma, las listas se clasifican en listas de
acceso restringido y listas de acceso no restringido.
Las listas de acceso restringido son las pilas, colas y dipolos.
Las listas de acceso no restringido, denominadas listas, son el tipo más general, al
cual se considera como la superclase de las otras clases de listas, en específico
de las pilas, colas y dipolos.
¿CUALES SON LOS TIPOS DE ESTRUCTURAS LINEALES?, Y DE SU
DEFINICIÓN
PILAS: Estructura de datos lineal donde los elementos pueden ser añadidos o
removidos solo por un extremo. Trabajan con filosofía LIFO (Last In- First Out ).
OPERACIONES BASICAS CON PILAS
PUSH (insertar).- Agrega un elementos a la pila en el extremo llamado tope.
-POP (remover).- Remueve el elemento de la pila que se encuentra en el extremo
llamado tope.
-VACIA.- Indica si la pila contiene o no contiene elementos.
-LLENA.- Indica si es posible o no agregar nuevos elementos a la pila.
COLAS: Es una lista lineal de elementos en la que las operaciones de insertar y
eliminar se realizan en diferentes extremos de la cola. Trabajan con filosofía FIFO
( First In - First out), el primer elemento en entrar es el primer elemento en salir.
TIPOS DE COLAS:
* Cola simple: Estructura lineal donde los elementos salen en el mismo orden en
que llegan.
* Cola circular: Representación lógica de una cola simple en un arreglo.
* Cola de Prioridades: Estructura lineal en la cual los elementos se insertan en
cualquier posición de la cola y se remueven solamente por el frente.
* Cola Doble (Bicola): Estructura lineal en la que los elementos se pueden añadir o
quitar por cualquier extremo de la cola (cola bidireccional).
OPERACIONES BÁSICAS EN COLAS SIMPLES
Insertar.- Almacena al final de la cola el elemento que se recibe como parámetro.
Eliminar.- Saca de la cola el elemento que se encuentra al frente.
Vacía.- Regresa un valor booleano indicando si la cola tiene o no elementos (true
– si la cola esta vacía, false – si la cola tiene al menos un elemento).
Llena.- Regresa un valor booleano indicando si la cola tiene espacio disponible
para insertar nuevos elementos (true – si está llena y false si existen espacios
disponibles).
Dipolo
Esta estructura equivale a dos colas colocadas una en un sentido y la otra en
sentido contrario, por ello las operaciones de inserción y eliminación se pueden
realizar por ambos extremos. Dos casos especiales se pueden tener, el dipolo de
entrada restringida donde sólo se puede insertar por un extremo y eliminar por
ambos, y el dipolo de salida restringida, donde se puede insertar por ambos
extremos y sólo se puede suprimir por un extremo. Se llamará a estos extremos
como izquierdo (izq.) y derecho (der).
Sus operaciones básicas son: creación, destrucción, verificación de dipolo vacío,
inserción de un nuevo elemento por la izquierda, inserción por la derecha,
eliminación por la izquierda, eliminación por la derecha, consulta del elemento que
está más a la izquierda y del que está más a la derecha.
LISTA
La lista es el tipo más general de estructura lineal donde las inserciones y
eliminaciones se hacen en cualquier punto de la lista, por ello se debe especificar
donde se requiere que se haga la operación. Sus operaciones básicas son:
creación, destrucción, inserción, eliminación, consulta y verificación de lista vacía.
Una lista enlazada es un tipo de dato auto referenciado porque contienen un
puntero o enlace 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.
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.
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. 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 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.
Una lista enlazada circular que contiene tres valores enteros
Listas enlazadas circulares simples
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.
Lista Enlazada Doblemente Circular
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.
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
Descargar