Se pueden dividir a los programas en dos partes fundamentales que son:
Algoritmos Estructuras de datos Los datos fsicos se encuentran asociados a un mecanismo de datos, que controla la forma en la que la informacin puede ser accedida por los programas, existen principalmente cuatro tipos de estos mecanismos. Que son : Las colas Las pilas
Las listas
Los roles !ada uno de los m"todos mencionados con anterioridad proporciona una solucin a cada tipo de prolema. !ada uno un dispositivo que reali#a una operacin de almacenamiento $ de recuperacin de los datos dados. %odos ellos tienen dos elementos en com&n, como es : El almacenamiento de datos
La recuperacin de datos Colas (Queue) Las colas no son ms que listas lineales de informacin a las cuales se accede de un modo determinado siendo el de tipo '()(*+ lo que quiere decir que el primer dato en entrar es tami"n el primer dato en salir, en las colas no se permite el acceso aleatorio a ning&n elemento concreto'como e,emplo podemos imaginar la cola de un supermercado, la de un cine,.....+, las inserciones para las colas se -acen al final de la lista. .a$ que tener en cuenta que las operaciones de recuperacin es destructiva 'elimina el elemento+ de la cola, si no es almacenado en otro lugar se destru$e. Las colas se utili#an principalmente en las simulaciones, planificacin de sucesos, $ los procesos de entrada salida con uffer. Las colas circulares: /o son mas que una variante de las anteriores $ su diferencia es que mientras que en las colas lineales es necesario parar el programa cuando se alcan#a el limite del arra$ en las circulares, la cola est llena solo cuando el ndice de almacenamiento $ el ndice de recuperacin son iguales, en otro caso la cola aun tiene espacio para almacenar ms datos. Su utili#acin ms com&n es en los sistemas operativos en los que la cola circular mantiene la informacin que se lee de arc-ivo $ que se escrie en arc-ivo, aplicaciones de tiempo real, etc... Pilas 0na pila es lo contrario de una cola, $a que su acceso es de tipo L)(*, el <imo que entra es el primero que sale, imaginar un montn de liros unos encima de otros $ que para acceder al segundo por arria primero es necesario coger el primero, su utili#acin principal es para el soft1are de sistemas, compiladores, interpretes. Las dos operaciones sicas, son las de almacenamiento $ la de recuperacin, que se llaman pus- 'la de almacenamiento + $ pop 'la de recuperacin+, para implementar una pila se necesitan las dos operaciones mencionadas con anterioridad $ una #ona de memoria para utili#arla como pila, se puede utili#ar un arra$, o una #ona asignada mediante asignacin dinmica de memoria. Al igual que en las colas, la funcin de recuperacin elimina el valor de la lista, $ si este no se almacena en alg&n lugar, este se destru$e. La variale top es el ndice de la siguiente posicin lire de la pila. !uando se implementan estas funciones, lo ms importante es evitar el desordamiento de la pila por los dos extremos, si top 23 la pila esta vaca $ si top 4que la ultima posicin de almacenamiento la pila est llena. Listas enlazadas Al contrario que las pilas $ las colas las listas enla#adas pueden acceder a una #ona de memoria de forma aleatoria, $a que cada tro#o de informacin lleva un enlace al siguiente elemento de la cadena. 0na lista enla#ada requiere una estructura de datos comple,a, al contrario que las colas o las pilas, que pueden operar con elementos simples o comple,os, adems una operacin de recuperacin en una lista enla#ada no elimina ni destru$e el elemento de la lista. 5ara poder eliminar un elemento de una lista es necesario utili#ar una operacin especifica de eliminacin. Las listas enla#adas se utili#an principalmente para dos propsitos, crear arra$s de un tama6o desconocido en memoria, $ los arc-ivos de almacenamiento en disco para ases de datos, las listas enla#adas permiten insertar $ eliminar nuevos elementos. Las listas pueden ser simplemente enla#adas o dolemente enla#adas, las simplemente enla#adas contienen un enlace al elemento siguiente, las dolemente enla#adas tanto al siguiente elemento como al elemento anterior del la lista. Listas simplemente enla#adas 0na lista simplemente enla#ada necesita que cada elemento contenga un enlace con el siguiente elemento, cada elemento consiste en una estructura de campos de informacin a punteros de enlace. Existen dos formas de construir una lista simplemente enla#ada , la primera es a6adir un nuevo elemento al principio o al final de la lista, la otra a6ade los elementos en un punto especifico de la lista. Si la lista $a esta ordenada, es conveniente mantenerla as, insertando los nuevos elementos en su lugar apropiado para lo cual se explora la lista de forma secuencial -asta encontrar el lugar apropiado, la nueva direccin se inserta en ese punto $ los enlaces se vuelven a colocar como sea necesario. Se pueden dar tres posiles situaciones al insertar un elemento en una lista enla#ada. 5rimero : El elemento se puede convertir en el primer elemento. Segundo : 5uede ser insertado entre otros dos elementos. %ercero: Se puede convertir en el ultimo elemento de la lista. %ener en cuenta que al camiar el primer elemento -a$ que actuali#ar el punto de entrada en alguna parte del programa, tami"n se puede utili#ar un centinela, que no es ms que el primer elemento no camia nunca con un valor especial, con lo que siempre ser el primer elemento de la lista pero se necesita una posicin ms de memoria. 5ara recuperar un elemento de la lista es como seguir una cadena, una rutina asada en el campo nomre. 5ara orrar un elemento al igual que para insertar un elemento se pueden dar los mismos tres casos, si se orra el primer elemento de la lista el puntero previo -a de -acerse nulo, $ la funcin tiene que devolver un puntero al comien#o de la lista para que cuando se orre el primer elemento de la lista, el programa cono#ca la direccin del nuevo primer elemento de la lista. Las listas simplemente enla#adas solo se pueden recorrer en sentido ascendente $ no en sentido descendente, para lo cual se pueden utili#ar las listas dolemente enla#adas. Listas dolemente enla#adas. Las listas dolemente enla#adas consisten en datos $ enlaces tanto al elemento siguiente como al elemento anterior. !on lo que se consiguen dos grandes venta,as, primero la lista se puede leer en cualquier direccin, la segunda es que se pueden leer los enlaces -acia delante como -acia atrs, con lo que si un enlace resulta no valido se puede reconstruir utili#ando el otro enlace. !omo en las listas simplemente enla#adas, las dolemente enla#adas pueden contener una funcin que almacene cada elemento en una posicin especifica de la lista a medida que esta se constru$e, en lugar de colocar cada elemento al final de la lista.