Practical 8
Practical 8
Write a program to implement a stack using two stack such that the enqueue operations runs in constant
time and dequeue operations runs in linear time.
Input:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int *arr;
} queue_t;
// Function prototypes
int main(void) {
queue_t *q1;
int x, select;
// Static allocation
q1 = queue_allocate(MAX);
do {
printf("\nChoice: ");
scanf("%d", &select);
switch (select) {
case 1:
scanf("%d", &x);
stack_push(q1, x);
queue_display(q1);
break;
case 2:
x = stack_pop(q1);
queue_display(q1);
if (x == QUEUE_EMPTY_MAGIC)
else
break;
case 0:
printf("\nQuitting.\n");
return 0;
default:
printf("\nQuitting.\n");
return 0;
}
} while (1);
return 0;
queue_t *queue_allocate(int n) {
q->rear = -1;
q->front = 0;
q->count = 0;
q->max = n;
return q;
q->arr[q->rear] = v;
q->count++;
if (q->count > 0) {
q->count--;
return removed_value;
} else {
return QUEUE_EMPTY_MAGIC;
}
}
return q->count;
return q->count == 0;
if (queue_is_empty(q)) {
printf("Queue is empty\n");
} else {
int i;
queue_insert(q, v);
return queue_remove(q);
return queue_is_empty(q);
}
return queue_count(q);
Output: