QUEUE USING POINTERS by smd
program:
#include <stdio.h>
#include <stdlib.h>
int count = 0;
struct node {
int data;
struct node *next;
};
struct node *front = NULL, *rear = NULL, *newn, *temp;
void enqueue() {
int x;
printf("Enter enqueue value: ");
scanf("%d", &x);
newn = (struct node*)malloc(sizeof(struct node));
newn->data = x;
newn->next = NULL;
if (front == NULL && rear == NULL) {
front = rear = newn;
} else {
rear->next = newn;
rear = newn;
}
count++;
}
void dequeue() {
if (count == 0) {
printf("Queue is underflow\n");
} else {
printf("%d is deleted\n", front->data);
temp = front;
front = front->next;
free(temp);
count--;
if (front == NULL) { // If queue becomes empty condition after dequeue
rear = NULL;
}
}
}
void display() {
if (count == 0) {
printf("Queue is empty\n");
} else {
temp = front;
printf("Queue elements are: ");
while (temp != NULL) {
printf("%d->", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
}
int main() {
int choice = 0;
while (choice != 4) {
printf("\nChoose an option:\n");
printf("1. Enqueue\n2. Dequeue\n3. Display\n4. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
enqueue();
break;
case 2:
dequeue();
break;
case 3:
display();
break;
case 4:
printf("Exiting.....\n");
break;
default:
printf("Invalid entry\n");
break;
}
}
return 0;
}
output:
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
1
Enter enqueue value: 10
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
1
Enter enqueue value: 20
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
1
Enter enqueue value: 30
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
3
Queue elements are: 10->20->30->NULL
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
2
10 is deleted
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
2
20 is deleted
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
3
Queue elements are: 30->NULL
Choose an option:
1. Enqueue
2. Dequeue
3. Display
4. Exit
4
Exiting...
Comments
Post a Comment