La pila solo tiene un extremo abierto para empujar y hacer estallar los elementos de datos en la otra parte. La cola tiene ambos extremos abiertos para encolar y sacar en cola 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 en la parte superior de la pila de CD. De manera similar, la cola es una cola para los boletos de teatro donde la persona que se encuentra en primer lugar, es decir, se colocará primero en la parte delantera de la cola y la nueva persona que llegue aparecerá en la parte posterior de la cola (parte posterior de la cola).
Gráfica comparativa
Bases para la comparación | Apilar | Cola |
---|---|---|
Principio de funcionamiento | LIFO (Último en Primero en salir) | FIFO (Primero en Primero en salir) |
Estructura | El mismo extremo se utiliza para insertar y eliminar elementos. | Un extremo se utiliza para la inserción, es decir, el extremo trasero y el otro extremo se utiliza para la eliminación de elementos, es decir, el extremo delantero. |
Número de punteros utilizados | Uno | Dos (en caso de cola simple) |
Operaciones realizadas | Push and Pop | Encolado y encolado |
Examen de la condición de vacío | Arriba == -1 | Frente == -1 || Delantero == Trasero + 1 |
Examen de estado completo | Top == Max - 1 | Trasero == Max - 1 |
Variantes | No tiene variantes. | Tiene variantes como cola circular, cola de prioridad, cola de doble finalización. |
Implementación | Mas simple | Comparativamente complejo |
Definición de Stack
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 que la pila se denomina tipo de lista Último en primer lugar (LIFO).
Tenga en cuenta que el elemento al que se accede a menudo en la pila es el elemento superior, mientras que el último elemento disponible se encuentra en la parte inferior de la pila.
Ejemplo
Algunos de ustedes pueden comer galletas (o Poppins). Si usted asume, solo se rasga un lado de la tapa, y las galletas se sacan una por una. Esto es lo que se llama estallar, 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 la cola
Una cola es una estructura de datos lineal que viene en la categoría del tipo no primitivo. Es una colección de tipo similar de elementos. La adición de nuevos elementos se lleva a cabo 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 de 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, y tenemos que hacer cola para esperar nuestro turno. Esta cola de espera se puede considerar como una cola.
Diferencias clave entre la pila y la cola
- Por otro lado, la pila sigue el mecanismo LIFO. La cola sigue el mecanismo FIFO para agregar y eliminar elementos.
- En una pila, el mismo extremo se utiliza para insertar y eliminar los elementos. Por el contrario, se utilizan dos extremos diferentes en la cola para insertar y eliminar los elementos.
- Como la pila solo tiene un extremo abierto, es la razón por la que se usa un solo puntero para referirse a la parte superior de la pila. Pero la cola utiliza dos punteros para referirse al frente y al final de la cola.
- Stack realiza dos operaciones conocidas como push y pop, mientras que en la cola se conoce como enqueue y dequeue.
- La implementación de la pila es más fácil, mientras que la implementación de la cola es difícil.
- La cola tiene variantes como la cola circular, la cola de prioridad, la cola de doble finalización, etc. Por el contrario, la pila no tiene variantes.
Implementación de la pila
La pila se puede aplicar de dos maneras:
- La implementación estática utiliza matrices para crear una pila. La implementación estática es, sin embargo, 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 se debe realizar durante el diseño del programa, luego el tamaño no 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 inferior en la pila, la memoria asignada estáticamente se desperdiciará. Por otro lado, si hay más elementos para almacenar en la pila, no podemos cambiar el tamaño de la matriz para aumentar su capacidad, de modo que pueda acomodar nuevos elementos.
- La 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 la cola
La cola se puede implementar de dos maneras:
- Implementación estática : si se implementa una cola utilizando matrices, el número exacto de elementos que queremos almacenar en la cola debe asegurarse antes, ya que 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 da la totalidad de los elementos que existen en la cola cuando se implementa mediante matrices:
delantero - trasero + 1
Si "atrás <delantero" entonces no habrá ningún elemento en la cola o la cola siempre estará vacía. - 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. Como 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 medio de un grupo de otros elementos.
Operaciones en la pila
Las operaciones básicas que se pueden operar en la pila son las siguientes:
- PUSH : cuando se agrega un nuevo elemento a la parte superior de la pila, se conoce como operación PUSH. Al presionar un elemento en la pila se 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 denomina condición STACK-FULL o STACK OVERFLOW. FUNCIONAMIENTO PUSH - función en C:
Teniendo en cuenta la pila se declara comoint stack [5], top = -1;
void push()
{
int item;
if (top < 4)
{
printf ("Enter the number") ;
scan ("%d", & item) ;
top = top + 1;
stack [top] = item;
}
else
{
printf (" Stack is full");
}
}
- POP : 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 de pop. Si no queda ningún elemento en la pila y se realiza el pop, entonces esto dará como resultado una condición de APAGADO DE APAGADO, lo que significa que su pila está vacía. OPERACIÓN POP - funciones en C:
Teniendo en cuenta la pila se declara comoint stack [5], top = -1;
void pop()
{
int item;
if (top >= 4)
{
item = stack [top];
top = top - 1;
printf ("Number deleted is = %d", item) ;
}
else
{
printf (" Stack is empty");
}
}
Operaciones en una cola
Las operaciones básicas que se pueden realizar en la cola son:
- Encolar : para insertar un elemento en una cola. Ejecución de la función de operación en C:
La cola se declara comoint queue [5], Front = -1 and rear = -1;
void add ()
{
int item;
if ( rear < 4)
{
printf ("Enter the number") ;
scan ("%d", & item) ;
if (front == -1)
{
front =0 ;
rear =0 ;
}
else
{
rear = rear + 1;
}
queue [rear] = item ;
}
else
{
printf ("Queue is full") ;
}
}
- En cola : para eliminar un elemento de la cola. Ejecute la función de operación en C:
La cola se declara comoint queue [5], Front = -1 and rear = -1;
void delete ()
{
int item;
if ( front ! = -1)
{
item = queue [ front ] ;
if (front == rear)
{
front =-1 ;
rear =-1 ;
}
else
{
front = front + 1;
printf ("Number deleted is = %d", item) ;
}
}
else
{
printf ("Queue is empty") ;
}
}
Aplicaciones de Stack
- Análisis en un compilador.
- Máquina virtual de Java.
- Deshacer en un procesador de textos.
- Botón Atrás en un navegador web.
- Lenguaje PostScript para impresoras.
- Implementando llamadas a funciones en un compilador.
Aplicaciones de la cola
- Buffers de datos
- Transferencia asíncrona de datos (archivo IO, tuberías, sockets).
- Asignación de solicitudes en un recurso compartido (impresora, procesador).
- Análisis de tráfico.
- Determine el número de cajeros para tener en un supermercado.
Conclusión
La pila y la cola son estructuras de datos lineales que se diferencian en ciertos aspectos, 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 hay algunas limitaciones de la cola simple que se recupera mediante el uso de otros tipos de cola.