Queue & Stack
Queue & Stack
#include <stdio.h>
struct Queue {
int arr[MAX_SIZE];
};
q->front = -1;
q->rear = -1;
if (isFull(q)) {
printf("Queue is full\n");
return;
if (isEmpty(q)) {
q->front = q->rear = 0;
} else {
q->rear++;
q->arr[q->rear] = data;
if (isEmpty(q)) {
printf("Queue is empty\n");
return -1;
if (q->front == q->rear) {
} else {
q->front++;
return dequeuedData;
if (isEmpty(q)) {
printf("Queue is empty\n");
return -1;
}
return q->arr[q->front];
if (isEmpty(q)) {
printf("Queue is empty\n");
return;
int i = q->front;
printf("Queue: ");
while (i != q->rear) {
i = (i + 1) % MAX_SIZE;
printf("%d\n", q->arr[i]);
int main() {
struct Queue q;
initialize(&q);
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
printQueue(&q);
return 0;
#include <stdlib.h>
struct Node {
int data;
};
struct Queue {
};
q->front = NULL;
q->rear = NULL;
if (newNode == NULL) {
return;
newNode->data = data;
newNode->next = NULL;
if (isEmpty(q)) {
} else {
q->rear->next = newNode;
q->rear = newNode;
if (isEmpty(q)) {
printf("Queue is empty\n");
return -1;
q->front = temp->next;
free(temp);
if (q->front == NULL) {
q->rear = NULL;
return dequeuedData;
}
// Function to peek at the front element of queue
if (isEmpty(q)) {
printf("Queue is empty\n");
return -1;
return q->front->data;
if (temp == NULL) {
printf("Queue is empty\n");
return;
printf("Queue: ");
temp = temp->next;
printf("\n");
int main() {
struct Queue q;
initialize(&q);
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
printf("Front element: %d\n", peek(&q));
printQueue(&q);
return 0;
struct Stack {
int arr[MAX_SIZE];
int top;
};
s->top = -1;
if (isFull(s)) {
printf("Stack Overflow\n");
return;
s->arr[++s->top] = data;
if (isEmpty(s)) {
printf("Stack Underflow\n");
return -1;
return s->arr[s->top--];
if (isEmpty(s)) {
printf("Stack is empty\n");
return -1;
return s->arr[s->top];
printf("Stack is empty\n");
return;
printf("Stack: ");
printf("\n");
int main() {
struct Stack s;
initialize(&s);
push(&s, 10);
push(&s, 20);
push(&s, 30);
print_stack(&s);
return 0;
#include <stdlib.h>
// Structure to represent a node in the linked list
struct Node {
int data;
};
struct Stack {
};
s->top = NULL;
if (newNode == NULL) {
return;
newNode->data = data;
newNode->next = s->top;
s->top = newNode;
if (isEmpty(s)) {
printf("Stack Underflow\n");
return -1;
s->top = temp->next;
free(temp);
return poppedData;
if (isEmpty(s)) {
printf("Stack is empty\n");
return -1;
return s->top->data;
printf("Stack: ");
current = current->next;
}
printf("NULL\n");
int main() {
struct Stack s;
initialize(&s);
push(&s, 10);
push(&s, 20);
push(&s, 30);
printStack(&s);
return 0;