Diferencia entre pila y cola

Autor: Laura McKinney
Fecha De Creación: 2 Abril 2021
Fecha De Actualización: 15 Mayo 2024
Anonim
Estructuras de Datos Lineales: Pila, Cola y Lista con Punto de Interés |  | UPV
Video: Estructuras de Datos Lineales: Pila, Cola y Lista con Punto de Interés | | UPV

Contenido


Stack y Queue son estructuras de datos no primitivas. Las principales diferencias entre stack y queue son que stack utiliza el método LIFO (último en entrar, primero en salir) para acceder y agregar elementos de datos, mientras que Queue usa el método FIFO (primero en entrar, primero en salir) para acceder y agregar elementos de datos.

Stack solo tiene un extremo abierto para empujar y hacer estallar los elementos de datos. Por otro lado, Queue tiene ambos extremos abiertos para poner en cola y quitar los elementos de datos.

La pila y la cola son las estructuras de datos utilizadas para almacenar elementos de datos y en realidad se basan en algún equivalente del mundo real. Por ejemplo, la pila es una pila de CD donde puede sacar y poner un CD a través de la parte superior de la pila de CD. Del mismo modo, La cola es una cola para entradas de teatro donde la persona parada en primer lugar, es decir, la parte delantera de la cola se servirá primero y la nueva persona que llegue aparecerá en la parte posterior de la cola (parte posterior de la cola).


  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Implementación
  5. Operaciones
  6. Aplicaciones
  7. Conclusión

Cuadro comparativo

Bases para la comparaciónApilar Cola
Principio de funcionamientoLIFO (último en entrar, primero en salir)FIFO (Primero en entrar, primero en salir)
EstructuraEl mismo extremo se usa para insertar y eliminar elementos.Un extremo se utiliza para la inserción, es decir, el extremo posterior y otro extremo para la eliminación de elementos, es decir, el extremo frontal.
Número de punteros utilizadosUnoDos (en caso de cola simple)
Operaciones realizadasPush and Pop Enqueue y dequeue
Examen de condición vacíaArriba == -1Frente == -1 || Delantero == trasero + 1
Examen de condición completa
Arriba == Máx. - 1Trasero == Max - 1
VariantesNo tiene variantes.Tiene variantes como cola circular, cola prioritaria, cola doblemente terminada.
ImplementaciónMás simpleComparativamente complejo


Definición de pila

Una pila es una estructura de datos lineal no primitiva. Es una lista ordenada donde se agrega el nuevo elemento y el elemento existente se elimina de un solo extremo, llamado como la parte superior de la pila (TOS). Como toda la eliminación e inserción en una pila se realiza desde la parte superior de la pila, el último elemento agregado será el primero en eliminarse de la pila. Esa es la razón por la cual la pila se llama tipo de lista Último en entrar, primero en salir (LIFO).

Tenga en cuenta que el elemento al que se accede con frecuencia en la pila es el elemento superior, mientras que el último elemento disponible está en la parte inferior de la pila.

Ejemplo

Algunos de ustedes pueden comer galletas (o Poppins). Si supone, solo se rasga un lado de la tapa y se sacan las galletas una por una. Esto es lo que se llama reventar, y de manera similar, si desea conservar algunas galletas por algún tiempo más tarde, las volverá a colocar en el paquete a través del mismo extremo roto que se llama empujar.

Definición de cola

Una cola es una estructura de datos lineal que viene en la categoría del tipo no primitivo. Es una colección de tipos similares de elementos. La adición de nuevos elementos tiene lugar en un extremo llamado extremo posterior. De manera similar, la eliminación de los elementos existentes tiene lugar en el otro extremo llamado Front-end, y es lógicamente un tipo de lista Primero en entrar, primero en salir (FIFO).

Ejemplo

En nuestro día a día nos encontramos con muchas situaciones en las que esperamos el servicio deseado, allí tenemos que ponernos en la fila de espera para que nos llegue el turno. Esta cola de espera puede considerarse como una cola.

  1. La pila sigue el mecanismo LIFO por otro lado La cola sigue el mecanismo FIFO para agregar y eliminar elementos.
  2. En una pila, se usa el mismo extremo para insertar y eliminar los elementos. Por el contrario, se usan dos extremos diferentes en la cola para insertar y eliminar los elementos.
  3. Como Stack tiene solo un extremo abierto, esa es la razón para usar solo un puntero para referirse a la parte superior de la pila. Pero la cola utiliza dos punteros para referirse al frente y al extremo posterior de la cola.
  4. Stack realiza dos operaciones conocidas como push y pop, mientras que en Queue se conoce como enqueue y dequeue.
  5. La implementación de la pila es más fácil, mientras que la implementación de la cola es complicada.
  6. La cola tiene variantes como cola circular, cola prioritaria, cola doblemente terminada, etc. En contraste, la pila no tiene variantes.

Implementación de pila

La pila se puede aplicar de dos maneras:

  1. Implementación estática usa matrices para crear una pila. Sin embargo, la implementación estática es una técnica sin esfuerzo, pero no es una forma flexible de creación, ya que la declaración del tamaño de la pila debe hacerse durante el diseño del programa, después de eso, el tamaño no se puede variar. Además, la implementación estática no es muy eficiente con respecto a la utilización de la memoria. Dado que una matriz (para implementar la pila) se declara antes del inicio de la operación (en el momento del diseño del programa). Ahora, si el número de elementos a ordenar es muy menor en la pila, la memoria estáticamente asignada se desperdiciará. Por otro lado, si hay más cantidad de elementos para almacenar en la pila, no podremos cambiar el tamaño de la matriz para aumentar su capacidad, de modo que pueda acomodar nuevos elementos.
  2. Implementación dinámica También se denomina representación de lista vinculada y utiliza punteros para implementar el tipo de pila de estructura de datos.

Implementación de cola

La cola se puede implementar de dos maneras:

  1. Implementación estática: Si una cola se implementa usando matrices, el número exacto de elementos que queremos almacenar en la cola debe asegurarse antes, porque el tamaño de la matriz debe declararse en el momento del diseño o antes de que comience el procesamiento. En este caso, el comienzo de la matriz se convertirá en el frente de la cola, y la última ubicación de la matriz actuará como la parte posterior de la cola. La siguiente relación proporciona que todos los elementos existen en la cola cuando se implementan usando matrices:
    delantero - trasero + 1
    Si "rear <front", entonces no habrá ningún elemento en la cola o la cola siempre estará vacía.
  2. Implementación dinámica: Implementando colas usando punteros, la principal desventaja es que un nodo en una representación vinculada consume más espacio de memoria que un elemento correspondiente en la representación de matriz. Dado que hay al menos dos campos en cada nodo, uno para el campo de datos y otro para almacenar la dirección del siguiente nodo, mientras que en la representación vinculada solo hay un campo de datos. El mérito de usar la representación vinculada se hace evidente cuando se requiere insertar o eliminar un elemento en el medio de un grupo de otros elementos.

Operaciones en pila

Las operaciones básicas que se pueden operar en la pila son las siguientes:

  1. EMPUJAR: cuando se agrega un nuevo elemento a la parte superior de la pila se conoce como operación PUSH. Empujar un elemento en la pila invoca la adición del elemento, ya que el nuevo elemento se insertará en la parte superior. Después de cada operación de empuje, la parte superior se incrementa en uno. Si la matriz está llena y no se puede agregar ningún elemento nuevo, se llama condición STACK-FULL o STACK OVERFLOW. OPERACIÓN DE EMPUJE - función en C:
    Considerando la pila se declara como
    int stack, top = -1;
    Vacío Push ()
    {
    int item;
    si (arriba <4)
    {
    f ("Ingrese el número");
    escaneo ("% d", & item);
    top = top + 1;
    pila = artículo;
    }
    más
    {
    f ("La pila está llena");
    }
    }
  2. POPULAR: Cuando un elemento se elimina de la parte superior de la pila, se conoce como operación POP. La pila se reduce en uno, después de cada operación emergente. Si no queda ningún elemento en la pila y se ejecuta el estallido, esto dará como resultado la condición de BAJOS DE PILA, lo que significa que su pila está vacía. OPERACIÓN POP: funciones en C:
    Considerando la pila se declara como
    int stack, top = -1;
    void pop ()
    {
    int item;
    si (arriba> = 4)
    {
    artículo = pila;
    top = top - 1;
    f ("Número eliminado es =% d", elemento);
    }
    más
    {
    f ("La pila está vacía");
    }
    }

Operaciones en una cola

Las operaciones básicas que se pueden realizar en la cola son:

  1. Enqueue: Para insertar un elemento en una cola. Función de operación en cola en C:
    La cola se declara como
    int queue, Front = -1 y rear = -1;
    void add ()
    {
    int item;
    si (trasero <4)
    {
    f ("Ingrese el número");
    escaneo ("% d", & item);
    si (frente == -1)
    {
    frente = 0;
    trasero = 0;
    }
    más
    {
    trasero = trasero + 1;
    }
    cola = artículo;
    }
    más
    {
    f ("La cola está llena");
    }
    }
  2. Dequeue: Para eliminar un elemento de la cola. Función de operación en cola en C:
    La cola se declara como
    int queue, Front = -1 y rear = -1;
    anular eliminar ()
    {
    int item;
    if (frente! = -1)
    {
    artículo = cola;
    if (delantero == trasero)
    {
    frente = -1;
    trasero = -1;
    }
    más
    {
    frente = frente + 1;
    f ("Número eliminado es =% d", elemento);
    }
    }
    más
    {
    f ("La cola está vacía");
    }
    }

Aplicaciones de la pila

  • Analizando en un compilador.
  • Máquina virtual de Java.
  • Deshacer en un procesador de textos.
  • Botón de retroceso en un navegador web.
  • Lenguaje PostScript para ers.
  • Implementando llamadas a funciones en un compilador.

Aplicaciones de la cola

  • Buffers de datos
  • Transferencia de datos asincrónica (archivo IO, tuberías, sockets).
  • Asignación de solicitudes en un recurso compartido (er, procesador).
  • Análisis de tráfico.
  • Determine la cantidad de cajeros que tendrá en un supermercado.

Conclusión

Stack y Queue son estructuras de datos lineales que difieren en ciertas formas, como el mecanismo de trabajo, la estructura, la implementación, las variantes, pero ambas se utilizan para almacenar los elementos en la lista y realizar operaciones en la lista, como la adición y eliminación de los elementos. Aunque existen algunas limitaciones de la cola simple que se recupera utilizando otros tipos de cola.