lunes, 23 de septiembre de 2013

Colas y tipos de colas

Colas

Representan filas de espera; las inserciones se realizan por la parte final y las eliminaciones por las parte inicial. Las colas también son llamadas FIFO (First In First Out), que quiere
decir “el primero que entra es el primero que sale”.
 
 
Colas simples:
Se inserta por un sitio y se saca por otro, en el caso de la cola simple se
inserta por el final y se saca por el principio. Para gestionar este tipo de cola
hay que recordar siempre cual es el siguiente elemento que se va a leer y cual
es el último elemento que se ha introducido.
 
Colas circulares:
En las colas circulares se considera que después del último elemento se
accede de nuevo al primero. De esta forma se reutilizan las posiciones
extraídas, el final de la cola es a su vez el principio, creándose un circuito
cerrado.
 
Colas con prioridad:
Las colas con prioridad se implementan mediante listas o arrays
ordenados. No nos interesa en este caso que salgan en el orden de entrada
sino con una prioridad que le asignemos. Puede darse el caso que existan
varios elementos con la misma prioridad, en este caso saldrá primero aquel
que primero llego (FIFO).

Bicolas:
son colas en donde los nodos se pueden añadir y quitar por ambos extremos; se les llama DEQUE (Double Ended QUEue). Para representar las bicolas lo podemos hacer con un array circular con Inicio y Fin que apunten a cada uno de los extremos

jueves, 5 de septiembre de 2013

Estructura de Datos Lineales y no Lineales

Estructura de Datos Lineales:

Estructuras continuas / lineales: Son aquellas que ocupan un espacio de memoria (bloque) continuo (un byte al lado del otro).Todas las declaraciones de tipos básicos son lineales, tanto si se reservan de manera estática como de manera dinámica. Es necesario tener una dirección de memoria que permita llegar al bloque donde está la estructura.
Existen tres estructuras lineales especialmente importantes:
1.-Las pilas
2.-Las colas
3.-Las listas
Su importancia radica en que son muy frecuentes en los esquemas algorítmicos.
Las operaciones básicas para dichas estructuras son:

• Crear la secuencia vacía
• Añadir un elemento a la secuencia
• Borrar un elemento a la secuencia
• Consultar un elemento de la secuencia
• Comprobar si la secuencia está vacía

Características:
· existe un único elemento, llamado primero,
· existe un único elemento, llamado último,
· cada elemento, excepto el primero, tiene un único predecesor y
· cada elemento, excepto el último, tiene un único sucesor

La diferencia entre las tres estructuras vendrá dada por la posición del elemento a añadir, borrar y consultar:
Pilas: Las tres operaciones actúan sobre el final de la secuencia
Colas: Se añade por el final y se borra y consulta por el principio
Listas: Las tres operaciones se realizan sobre una posición privilegiada de la secuencia, la cual puede desplazarse.


Estructura de Datos No Lineales:

Son aquellas que ocupan bloques de memoria no continuos / lineales. Para lidiar con el problema de la fragmentación y, sobretodo del crecimiento dinámico. Los bloques deben estar enlazados unos con otros para poder “navegar” por la estructura, es decir, tener acceso a otro(s) dato(s) a partir del actual.

Se caracteriza por no existir una relación de sus elementos es decir que un elemento puede estar con cero uno o más elementos. A las estructuras de datos no lineales se les llama también estructuras de datos multienlazadas.

Características:
Cada elemento puede estar enlazado a cualquier otro de los componentes. Se trata de estructuras de datos en las que cada elemento puede tener varios sucesores y/o varios predecesores.


Las estructuras no lineales de datos más generales son:
· Árboles. Estructura no lineal jerárquica en la que cada elemento tiene un único antecesor y puede tener varios sucesores. Existe un único camino entre el primer nodo de la estructura y cualquier otro nodo.
· Grafos. Cada elemento puede estar enlazado a cualquier otro.
· Listas enlazadas. Estructura formada por nodos que se enlazan entre sí partiendo de un nodo inicial cuya referencia lleva el nombre de cabecera y una posible referencia al nodo final o cola. Si cada nodo apunta sólo a su siguiente se dice que la lista enlazada es simple. Si también se incluye una referencia al nodo anterior, entonces la lista enlazada es doble.







Abstracciones en lenguajes de programación.

Abstracciones en lenguajes de programación.

Abstracciones de control (Nivel setencial):
 Sentencias de bifurcación (if else) y bucles (for, while, loop, ect.)

Abstracciones de control (Nivel por procedimientos):
 Procedimientos, métodos o funciones.

Tipos de datos Abstractos
 Los tipos de datos son abstracciones

 La abstracción de datos: Proceso de construir nuevos datos.

 Tipos abstractos de datos: los nuevos tipos de datos definidos por el usuario.

 TAD: Representación (datos) + operaciones/funciones y procedimientos.


Manejo de memoria estática
 Es el uso de estructura de datos de tamaño fijo, como los arreglos de uno a dos subíndices.

Manejo de memoria Dinámica
  Son aquellas que crecen o se decrementan durante la ejecución de los programas.

Listas enlazadas: son colecciones de elementos de información "formados en fila". Se hacen inserciones o eliminaciones por cualquier lugar en la lista.

Pila: son importantes en los compiladores y SO; las inserciones se realizan en un extremo se la pila.

Cola: Representan filas de espera; las inserciones se realizan por la parte final y las eliminaciones por la parte inicial.

Arboles binarios: Facilitan la búsqueda y ordenamiento de datos de alta velocidad, la eliminación eficiente de elementos de información duplicados.

Estructura de Datos

Estructura de Datos

 Es una agregación de tipos de datos compuestos y atómicos en un conjunto con relaciones bien definidas

 Una estructura significa un conjunto de reglas que contienen los datos juntos.

 Un conjunto de asociaciones o relaciones (estructura) que implica a los elementos combinados.

 Un tipo de dato es un conjunto de valores y operaciones asociadas a esos valores.

 Tipo de datos primitivos son aquellos que no se constituyen a partir de otros tipos y son entidades únicas:
  • Enteros.
  • Coma flotante.
  • Carácter.
  • Lógico.
 Tipos de datos compuestos son aquellos cuyos valores constan de colecciones de elementos de datos:
  • Arreglos.
  • Secuencias  (Listas y arboles).
  • Registros (Bases de datos).

 La abstraccion de datos es la técnica para inventar nuevos tipos de datos que sean mas adecuados a una aplicación y, por consiguiente facilitan la escritura del programa (Programas mas cortos, mas legibles y flexibles).


 La modularidad es la posibilidad de dividir una aplicación en piezas mas pequeñas.