¿Cuál es la diferencia básica entre stack y queue?
Por favor, ayúdame, no puedo encontrar la diferencia.
¿Cómo diferenciar una pila y una cola?
Busqué la respuesta en varios enlaces y encontré esta respuesta ...
En programación de alto nivel,
una pila se define como una lista o secuencia de elementos que se alarga colocando nuevos elementos "encima" de los elementos existentes y se acorta eliminando elementos de la parte superior de los elementos existentes. Es un ADT [Tipo de datos abstractos] con operaciones matemáticas de "push" y "pop".
Una cola es una secuencia de elementos a la que se agrega colocando el nuevo elemento en la parte posterior de los existentes y se acorta eliminando elementos delante de la cola. Es un ADT [Tipo de datos abstractos]. Hay más de estos términos entendidos en la programación de Java, C ++, Python, etc.
¿Puedo tener una respuesta más detallada? Por favor, ayúdame.
Respuestas:
Stack es una estructura de datos LIFO (último en entrar, primero en salir). El enlace asociado a wikipedia contiene descripciones detalladas y ejemplos.
Queue es una estructura de datos FIFO (primero en entrar, primero en salir). El enlace asociado a wikipedia contiene descripciones detalladas y ejemplos.
fuente
Imagina una pila de papel . La última pieza puesta en la pila está en la parte superior, por lo que es la primera en salir. Esta es LIFO . Agregar un trozo de papel se llama "empujar" y quitar un trozo de papel se llama "reventar".
Imagina una cola en la tienda . La primera persona en la fila es la primera persona que se sale de la fila. Este es FIFO . Una persona que se pone en línea está "en cola", y una persona que se sale de la línea está "en cola".
fuente
Un modelo visual
Pila de panqueques (LIFO)
La única forma de agregar uno y / o eliminar uno es desde la parte superior.
Cola de línea (FIFO)
Cuando uno llega, llegan al final de la cola y cuando uno se va, salen del frente de la cola.
Dato curioso: los británicos se refieren a las filas de personas como una cola
fuente
Puede pensar en ambos como una lista ordenada de cosas (ordenadas por el momento en que se agregaron a la lista). La principal diferencia entre los dos es cómo los nuevos elementos entran en la lista y los elementos antiguos salen de la lista.
Para una pila, si tengo una lista
a, b, c
, y agregod
, se agrega al final, así que termino cona,b,c,d
. Si quiero mostrar un elemento de la lista, elimino el último elemento que agregué, que esd
. Después de un pop, mi listaa,b,c
vuelve a estarPara una cola, agrego nuevos elementos de la misma manera.
a,b,c
se conviertea,b,c,d
después de agregard
. Pero, ahora, cuando aparece, tengo que tomar un elemento del frente de la lista, para que se conviertab,c,d
.¡Es muy simple!
fuente
Cola
Queue es una colección ordenada de artículos.
Los elementos se eliminan en un extremo llamado extremo "frontal" de la cola.
Los elementos se insertan en el otro extremo llamado 'trasero' de la cola.
El primer elemento insertado es el primero en eliminarse (FIFO).
Apilar
Stack es una colección de artículos.
Permite el acceso a un solo elemento de datos: el último elemento insertado.
Los elementos se insertan y eliminan en un extremo llamado 'Top of the stack'.
Es un objeto dinámico y en constante cambio.
Todos los elementos de datos se colocan encima de la pila y se quitan
Esta estructura de acceso se conoce como estructura Last in First out (LIFO)
fuente
APILAR:
COLA:
fuente
Una pila es una colección de elementos, que se pueden almacenar y recuperar de uno en uno. Los elementos se recuperan en orden inverso a su tiempo de almacenamiento, es decir, el último elemento almacenado es el siguiente elemento que se recuperará. Una pila a veces se denomina estructura de último en entrar, primero en salir (LIFO) o primero en entrar, último en salir (FILO). Los elementos almacenados previamente no se pueden recuperar hasta que se haya recuperado el último elemento (generalmente denominado elemento 'superior').
Una cola es una colección de elementos, que se pueden almacenar y recuperar de uno en uno. Los elementos se recuperan en orden de tiempo de almacenamiento, es decir, el primer elemento almacenado es el siguiente elemento que se recuperará. Una cola a veces se denomina estructura de primero en entrar, primero en salir (FIFO) o de último en entrar, último en salir (LILO). Los elementos almacenados posteriormente no se pueden recuperar hasta que se haya recuperado el primer elemento (generalmente denominado elemento "frontal").
fuente
STACK: Stack se define como una lista de elementos en la que podemos insertar o eliminar elementos solo en la parte superior de la pila
La pila se usa para pasar parámetros entre funciones. En una llamada a una función, los parámetros y las variables locales se almacenan en una pila.
Una pila es una colección de elementos, que se pueden almacenar y recuperar de uno en uno. Los elementos se recuperan en orden inverso a su tiempo de almacenamiento, es decir, el último elemento almacenado es el siguiente elemento que se recuperará. Una pila a veces se denomina estructura de último en entrar, primero en salir (LIFO) o primero en entrar, último en salir (FILO). Los elementos almacenados previamente no se pueden recuperar hasta que se haya recuperado el último elemento (generalmente denominado elemento 'superior').
COLA:
Queue es una colección del mismo tipo de elemento. Es una lista lineal en la que las inserciones pueden tener lugar en un extremo de la lista, llamada parte posterior de la lista, y las eliminaciones solo pueden tener lugar en el otro extremo, llamada parte delantera de la lista
Una cola es una colección de elementos, que se pueden almacenar y recuperar de uno en uno. Los elementos se recuperan en orden de tiempo de almacenamiento, es decir, el primer elemento almacenado es el siguiente elemento que se recuperará. Una cola a veces se denomina estructura de primero en entrar, primero en salir (FIFO) o de último en entrar, último en salir (LILO). Los elementos almacenados posteriormente no se pueden recuperar hasta que se haya recuperado el primer elemento (generalmente denominado elemento "frontal").
fuente
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
mientras que con una cola
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!
fuente
STACK es una lista LIFO (última entrada, primera salida). significa supongamos que se insertan 3 elementos en la pila, es decir, 10,20,30. 10 se inserta primero y 30 se inserta en último lugar, por lo que 30 se elimina por primera vez de la pila y 10 se elimina por última vez de la pila. Esta es una lista LIFO (Última entrada, primera salida).
QUEUE es la lista FIFO (Primero en entrar, primero en salir). Significa que primero se inserta un elemento que se debe eliminar primero.
fuente
Apila una colección considerada vertical. Primero entienda que una colección es un OBJETO que reúne y organiza otros OBJETOS más pequeños. Estos OBJETOS más pequeños se denominan comúnmente Elementos. Estos elementos son "Empujados" en la pila en un orden ABC donde A es primero y C es el último. verticalmente se vería así: 3er elemento agregado) C 2do elemento agregado) B 1er elemento agregado) A
Observe que la "A" que se agregó por primera vez a la pila está en la parte inferior. Si desea eliminar la "A" de la pila, primero debe eliminar "C", luego "B" y finalmente su elemento de destino "A". La pila requiere un enfoque LIFO al tratar con las complejidades de una pila. (Último en entrar, primero en salir) Al eliminar un elemento de una pila, la sintaxis correcta es pop. no eliminamos un elemento de una pila, lo "sacamos".
Recordemos que "A" fue el primer elemento empujado a la pila y "C" fue el último elemento empujado en la pila. Si decide que le gustaría ver qué hay en la parte inferior de la pila, ya que los 3 elementos están ordenados en la pila A es el primero B es el segundo y C es el tercer elemento, la parte superior tendría que extraerse y luego segundo elemento agregado para ver la parte inferior de la pila.
fuente