Colas circulares
Por Luis E. Vargas Azcona
Estructuras de Datos Básicas
Introducción
Escribí este tutorial con el objetivo de enseñar estructuras de datos a participantes de la OMI en las
ocaciones en que no puedo hacerlo personalmente, ya que hasta la fecha no he encontrado ningúntutorial de estructuras de datos que hable con profundidad de los temas y a la vez este orientado a
resolver problemas.
La mayoría de tutoriales de estructuras de datos que se encuentran estan orientados al desarrollo de
aplicaciones, y los pocos que he encontrado orientados a resolver problemas de concursos de
programación, no habla de los temas con la suficiente profundidad.Otra buena razón para escribir este tutorial, es que las implementaciones que he encontrado en otros
tutoriales(y en los libros tambien) de las estructuras de datos, son muy poco prácticas para concursos
(aunque son lo mejor en el desarrollo de aplicaciones).
Este tutorial pretende enseñar a manejar eficazmente las estructuras de datos básicas, de las cuales se
derivan muchas otras estructuras de datos mas avanzadas.Además de que el participante las conozca y las sepa implementar, tambien es necesario que sepa hacer
un uso inteligente de ellas, es por eso que este tutorial incluye una gran cantidad de problemas que
involucran las estructuras de datos.
Como todo buen programador debe de saber comprobar rigursamente sus ideas o darse cuenta que está
equivocado, este tutorial tambien incluye problemas de comprobación y de análisis matemático.Requisitos para entender este tutorial
Para comprender este tutorial se requiere mas que nada:
● Conocer el lenguaje de programación C/C++.
● Conocimientos básicos de álgebra y teoría de conjuntos.
● Estar familiarizado con definiciones recursivas.
● Entender el análisis de complejidad de funciones y del tiempo de ejecución de un programa.
●Conocer y dominar las comprobaciones por medio de inducción matemática.
“modo de uso” del tutorial
Los problemas de este tutorial, como te darás cuenta, no tienen límites especificados, ni formato de
entrada y salida; y no todos requieren de escribir un programa.
El hecho de que no tengan rangos especificados los problemas, no significa que se tenga que usarmemoria dinámica, es decir, al resolver problemas de este tutorial, tu pon los límites del tamaño que
creas conveniente, utiliza el formato de entrada que creas conveniente, y procura usar memoria estática.
Pero si debes tomar en cuenta la complejidad que especifica la descripción del problema.
1
Tutorial de Estructuras de Datos Básicas
Por Luis E. Vargas AzconaEl objetivo de todo esto es no perder tiempo con descripciones largas sino ir directo al problema.
Si encuentras un error, o hay algo que no se entiende y cumples con los requisitos para entender el
tutorial, mandame un mensaje a luison.cpp@gmail.com
¿Qué son y para qué sirven las estructuras de datos?
En lo que se refiere a la resolución de problemas, muchas veces para plantear el problema imaginamos
objetos y acciones que se relacionan entre si.Por ejemplo, un mesero tiene platos de colores apilados; de vez en cuando el que lava los platos coloca
un plato recién lavado sobre la pila de platos; y en otras ocaciones el mesero toma el plato que esta
hasta arriba y sirve ahí la comida que ha sido preparada por el cocinero para posteriormente llevarla a
su destino.
Si sabemos de qué color es la pila inicial de platos, y en qué momentos el que lava los platos colocó
platos sobre la pila(y claro, tambien sabemos el color de estos), y en qué momentos el mesero retiró el
plato que se encontraba hasta arriba; podemos saber de qué color será el plato que le toca a cada cliente.
Una manera de saberlo podría ser, hacer una representación dramatica de los hechos; pero esto no es...
Regístrate para leer el documento completo.