You are on page 1of 6

ALGORITMO

En matemticas, lgica, ciencias de la computacin y disciplinas relacionadas,


un algoritmo (del griego y latn, dixit algoritmos y este a su vez del matemtico persa AlJuarismi1 ) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y
finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a
quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los
pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el
objeto de estudio de la algoritmia.1
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos
ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las
instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos
en matemtica son el algoritmo de multiplicacin, para calcular el producto, el algoritmo de
la divisin para calcular el cociente de dos nmeros, el Euclides para obtener el mximo
comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema de
ecuaciones lineales.

ESTRUCTURA DE DATOS

En programacin, una estructura de datos es una forma particular de organizar datos en una
computadora para que pueda ser utilizado de manera eficiente.
Diferentes tipos de estructuras de datos son adecuadas para diferentes tipos de aplicaciones,
y algunos son altamente especializados para tareas especficas.
Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera
eficiente para usos tales como grandes bases de datos y servicios de indizacin de internet.
Por lo general, las estructuras de datos eficientes son clave para disear eficientes algoritmos.
Algunos mtodos formales de diseo y lenguajes de programacin destacan las estructuras
de datos, en lugar de los algoritmos, como el factor clave de organizacin en el diseo
de software.

Las estructuras de datos se basan generalmente en la capacidad de un ordenador para


recuperar y almacenar datos en cualquier lugar de su memoria.

PILA: Una pila (stack en ingls) es una lista ordenada o estructura de datos en la que el modo
de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar,
primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en
multitud de ocasiones en el rea de informtica debido a su simplicidad y ordenacin implcita
de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca
un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo
elemento apilado.
En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto
apilado (denominado TOS, Top of Stack en ingls). La operacin retirar permite la obtencin
de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con
anterioridad), que pasa a ser el nuevo TOS.
Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre
una pila de platos, y una operacin retirar a retirarlo.
Las pilas suelen emplearse en los siguientes contextos:

Evaluacin de expresiones en notacin postfija (notacin polaca inversa).

Reconocedores sintcticos de lenguajes independientes del contexto

Implementacin de recursividad.

A modo de resumen tipo de datos, la pila es un contenedor de nodos y tiene dos operaciones
bsicas: push (o apilar) y pop (o desapilar). 'Push' aade un nodo a la parte superior de la
pila, dejando por debajo el resto de los nodos. 'Pop' elimina y devuelve el actual nodo superior
de la pila. Una metfora que se utiliza con frecuencia es la idea de una pila de platos en una
cafetera con muelle de pila. En esa serie, slo la primera placa es visible y accesible para el
usuario, todas las dems placas permanecen ocultas. Como se aaden las nuevas placas,
cada nueva placa se convierte en la parte superior de la pila, escondidos debajo de cada
plato, empujando a la pila de placas. A medida que la placa superior se elimina de la pila, la
segunda placa se convierte en la parte superior de la pila. Dos principios importantes son
ilustrados por esta metfora: En primer lugar la ltima salida es un principio, la segunda es

que el contenido de la pila est oculto. Slo la placa de la parte superior es visible, por lo que
para ver lo que hay en la tercera placa, el primer y segundo platos tendrn que ser retirados.
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las
implementaciones modernas de las pilas se suelen aadir ms de uso habitual.

Crear: se crea la pila vaca. (constructor)

Tamao: regresa el nmero de elementos de la pila. (size)

Apilar: se aade un elemento a la pila.(push)

Desapilar: se elimina el elemento frontal de la pila.(pop)

Cima: devuelve el elemento que est en la cima de la pila. (top o peek)

Vaca: devuelve cierto si la pila est sin elementos o falso en caso de que contenga
uno. (empty).

COLA: La particularidad de una estructura de datos de cola es el hecho de que slo podemos
acceder al primer y al ltimo elemento de la estructura. As mismo, los elementos slo se
pueden eliminar por el principio y slo se pueden aadir por el final de la cola.

Ejemplos de colas en la vida real seran: personas comprando en un supermercado,


esperando para entrar a ver un partido de ftbol, esperando en el cine para ver una pelcula,
una pequea peluquera, etc. La idea esencial es que son todos lneas de espera.

Crear: se crea la cola vaca.

Encolar: (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de


esta.

Desencolar: (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir,


el primer elemento que entr.

Frente: (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer


elemento que entr.

LISTA: En Ciencias de la Computacin, una lista enlazada es 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.
Una lista enlazada es un tipo de dato autorreferenciado porque contienen un puntero o enlace
(en ingls link, del mismo significado) a otro dato del mismo tipo. Las listas enlazadas
permiten inserciones y eliminacin 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: listas 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.

Listas enlazadas lineales


Listas simples enlazadas
La lista enlazada bsica es la lista enlazada simple la cual tiene un enlace por nodo. Este
enlace apunta al siguiente nodo (o indica que tiene la direccin en memoria del siguiente
nodo) en la lista, o al valor NULL o a la lista vaca, si es el ltimo nodo.
Listas doblemente enlazadas
Un tipo de lista enlazada ms sofisticado es la lista doblemente enlazada o lista enlazadas
de dos vas. 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 algn lenguaje de muy bajo nivel, XOR-Linking ofrece una va para implementar listas
doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque esta tcnica no
se suele utilizar.

Listas enlazadas circulares


En una lista enlazada circular, el primer y el ltimo nodo estn 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
direccin 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
ms 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 simples circulares


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 despus de uno que ya tengamos referenciado.
Por esta razn, es usual quedarse con una referencia solamente al ltimo elemento en una

lista enlazada circular simple, esto nos permite rpidas inserciones al principio, y tambin
permite accesos al primer nodo desde el puntero del ltimo nodo.

Listas enlazadas doblemente circulares


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 algn
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 (tambin llamado falso nodo o nodo
ficticio) al principio o al final de la lista, el cual no es usado para guardar datos. Su propsito
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.

CONCLUSION
Las estructuras de datos y algoritmos constituyen elementos bsicos en el almacenamiento
y tratamiento de la informacin. El conocimiento y entendimiento del concepto de algoritmo,
sus representaciones mtodos que desembocan en el desarrollo de programas constituyen un
paso previo indispensable para introducirse en el mbito de la programacin. Han de
conocerse y manejarse con facilidad los tipos de datos y las tcnicas de creacin,
representacin y refinamiento de algoritmos para la futura construccin de programas de
calidad.

You might also like