Para intentar simplificar en exceso la descripción de una pila y una cola, ambas son cadenas dinámicas de elementos de información a las que se puede acceder desde un extremo de la cadena y la única diferencia real entre ellas es el hecho de que:
cuando trabajas con una pila
- inserta elementos en un extremo de la cadena y
- recupera y / o elimina elementos del mismo extremo de la cadena
mientras que con una cola
- inserta elementos en un extremo de la cadena y
- los recuperas / eliminas del otro extremo
NOTA : Estoy usando la redacción abstracta de recuperar / eliminar en este contexto porque hay casos en los que solo recuperas el elemento de la cadena o, en cierto sentido, solo lo lees o accedes a su valor, pero también hay casos en los que eliminas el elemento de la cadena y, finalmente, hay casos en los que realiza ambas acciones con la misma llamada.
Además, el elemento de palabra se usa a propósito para abstraer la cadena imaginaria tanto como sea posible y desacoplarla de términos específicos del lenguaje de programación. Esta entidad de información abstracta llamada elemento podría ser cualquier cosa, desde un puntero, un valor, una cadena o caracteres, un objeto, ... dependiendo del idioma.
En la mayoría de los casos, aunque en realidad es un valor o una ubicación de memoria (es decir, un puntero). Y el resto solo está ocultando este hecho detrás de la jerga del lenguaje <
Una cola puede ser útil cuando el orden de los elementos es importante y debe ser exactamente el mismo que cuando los elementos entraron por primera vez en su programa. Por ejemplo, cuando procesa una transmisión de audio o cuando almacena datos de la red en búfer. O cuando realiza cualquier tipo de almacenamiento y procesamiento hacia adelante. En todos estos casos, necesita que la secuencia de los elementos salga en el mismo orden en que entraron en su programa; de lo contrario, la información puede dejar de tener sentido. Por lo tanto, puede dividir su programa en una parte que lee datos de alguna entrada, los procesa y los escribe en una cola, y una parte que recupera datos de la cola los procesa y los almacena en otra cola para procesarlos o transmitirlos. .
Una pila puede ser útil cuando necesita almacenar temporalmente un elemento que se utilizará en los pasos inmediatos de su programa. Por ejemplo, los lenguajes de programación usualmente usan una estructura de pila para pasar variables a funciones. Lo que realmente hacen es almacenar (o empujar) los argumentos de la función en la pila y luego saltar a la función donde eliminan y recuperan (o hacen estallar) el mismo número de elementos de la pila. De esa forma, el tamaño de la pila depende del número de llamadas anidadas de funciones. Además, después de que se ha llamado a una función y terminado lo que estaba haciendo, deja la pila en la misma condición que antes de que se haya llamado. De esa manera, cualquier función puede operar con la pila ignorando cómo operan otras funciones con ella.
Por último, debe saber que hay otros términos utilizados para los mismos conceptos similares. Por ejemplo, una pila podría llamarse un montón. También hay versiones híbridas de estos conceptos, por ejemplo, una cola de doble extremo puede comportarse al mismo tiempo que una pila y como una cola, porque ambos extremos pueden acceder a ella simultáneamente. Además, el hecho de que se le proporcione una estructura de datos como una pila o como una cola no significa necesariamente que se implemente como tal, hay instancias en las que una estructura de datos se puede implementar como cualquier cosa y se puede proporcionar como un específico estructura de datos simplemente porque se puede hacer que se comporte como tal. En otras palabras, si proporciona un método push y pop a cualquier estructura de datos, ¡mágicamente se convierten en pilas!