0% found this document useful (0 votes)
17 views

Stack & Queue

The document defines functions for implementing a stack, queue, and circular queue in C using arrays. It defines push(), pop(), peek(), isFull(), and isEmpty() functions for the stack. Similarly, it defines enqueue(), dequeue(), peek(), isFull(), and isEmpty() functions for the queue and circular queue. The main() function demonstrates using each data structure by adding and removing elements.

Uploaded by

Rangoli Life
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Stack & Queue

The document defines functions for implementing a stack, queue, and circular queue in C using arrays. It defines push(), pop(), peek(), isFull(), and isEmpty() functions for the stack. Similarly, it defines enqueue(), dequeue(), peek(), isFull(), and isEmpty() functions for the queue and circular queue. The main() function demonstrates using each data structure by adding and removing elements.

Uploaded by

Rangoli Life
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Stack

#include <stdio.h>
#define MAX_SIZE 5
int stack[MAX_SIZE];
int top = -1;

void push(int value)


{
if (top == MAX_SIZE - 1)
{
printf("Stack Overflow: Cannot push element, stack is full.\n");
}
else
{
top++;
stack[top] = value;
printf("Pushed element: %d\n", value);
}
}

void pop()
{
if (top == -1)
{
printf("Stack Underflow: Cannot pop element, stack is empty.\n");
}
else
{
int poppedElement = stack[top];
top--;
printf("Popped element: %d\n", poppedElement);
}
}

int peek()
{
if (top == -1)
{
printf("Stack is empty.\n");
return -1;
}
else
{
printf("Top element: %d\n", stack[top]);
return stack[top];
}
}

int isFull()
{
if (top == MAX_SIZE - 1)
{
printf("Stack is full.\n");
return 1;
}
else
{
printf("Stack is not full.\n");
return 0;
}
}

int isEmpty()
{
if (top == -1)
{
printf("Stack is empty.\n");
return 1;
}
else
{
printf("Stack is not empty.\n");
return 0;
}
}

int main()
{
// Demonstrate stack operations
push(10);
push(20);
push(30);
push(40);
push(50);
push(60); // Stack overflow
isFull();

peek();

pop();
pop();
pop();
pop();
pop();
pop(); // Stack underflow
isEmpty();

return 0;
}

Queue
#include <stdio.h>
#define MAX_SIZE 5
int queue[MAX_SIZE];
int front = -1;
int rear = -1;

void enqueue(int value)


{
if (rear == MAX_SIZE - 1)
{
printf("Queue Overflow: Cannot enqueue element, queue is
full.\n");
}
else
{
if (front == -1)
front = 0;
rear++;
queue[rear] = value;
printf("Enqueued element: %d\n", value);
}
}

void dequeue()
{
if (front == -1 || front > rear)
{
printf("Queue Underflow: Cannot dequeue element, queue is
empty.\n");
}
else
{
int dequeuedElement = queue[front];
front++;
printf("Dequeued element: %d\n", dequeuedElement);
if (front > rear)
{
front = -1;
rear = -1;
}
}
}

int peek()
{
if (front == -1 || front > rear)
{
printf("Queue is empty.\n");
return -1;
}
else
{
printf("Front element: %d\n", queue[front]);
return queue[front];
}
}

int isFull()
{
if (rear == MAX_SIZE - 1)
{
printf("Queue is full.\n");
return 1;
}
else
{
printf("Queue is not full.\n");
return 0;
}
}

int isEmpty()
{
if (front == -1 || front > rear)
{
printf("Queue is empty.\n");
return 1;
}
else
{
printf("Queue is not empty.\n");
return 0;
}
}

int main()
{
// Demonstrate queue operations
enqueue(10);
enqueue(20);
enqueue(30);
enqueue(40);
enqueue(50);
enqueue(60); // Queue overflow
isFull();

peek();
dequeue();
dequeue();
dequeue();
dequeue();
dequeue();
dequeue(); // Queue underflow
isEmpty();

return 0;
}

Circular Queue
#include <stdio.h>
#define MAX_SIZE 5
int queue[MAX_SIZE];
int front = -1;
int rear = -1;

void enqueue(int value)


{
if ((rear + 1) % MAX_SIZE == front)
{
printf("Queue Overflow: Cannot enqueue element, queue is
full.\n");
}
else
{
if (front == -1)
front = 0;
rear = (rear + 1) % MAX_SIZE;
queue[rear] = value;
printf("Enqueued element: %d\n", value);
}
}

void dequeue()
{
if (front == -1 || front == rear)
{
printf("Queue Underflow: Cannot dequeue element, queue is
empty.\n");
}
else
{
int dequeuedElement = queue[front];
front = (front + 1) % MAX_SIZE;
printf("Dequeued element: %d\n", dequeuedElement);
if (front == (rear + 1) % MAX_SIZE)
{
front = -1;
rear = -1;
}
}
}

int peek()
{
if (front == -1 || front == rear)
{
printf("Queue is empty.\n");
return -1;
}
else
{
printf("Front element: %d\n", queue[front]);
return queue[front];
}
}

int isFull()
{
if ((rear + 1) % MAX_SIZE == front)
{
printf("Queue is full.\n");
return 1;
}
else
{
printf("Queue is not full.\n");
return 0;
}
}

int isEmpty()
{
if (front == -1 || front == rear)
{
printf("Queue is empty.\n");
return 1;
}
else
{
printf("Queue is not empty.\n");
return 0;
}
}

int main()
{
// Demonstrate circular queue operations
enqueue(10);
enqueue(20);
enqueue(30);
enqueue(40);
enqueue(50);
enqueue(60); // Queue overflow
isFull();

peek();

dequeue();
dequeue();
dequeue();
dequeue();
dequeue();
dequeue(); // Queue underflow
isEmpty();

return 0;
}

You might also like