Queue
A queue is a a linear collection of objects, where objects are inserted and removed according to the first-in first-out (FIFO) principle. An example of a queue is a line of people in a ticket counter. New additions to the line is made to the back of the queue, while removal (or serving) happens in the front. In a queue only two operations are allowed enqueue/insert and dequeue/delete. Enqueue means to insert an item into the back of the queue, dequeue means deleting the front item.
Following is the implementation of a Queue in C programming language using array. It has three functions for insert, delete and display.
Insert function takes the value to be inserted as an argument and inserts it to the end of the queue. If the queue is already full, it fails to insert the value and returns -1 as an error code otherwise it inserts the value and returns 0
Delete function deletes the value from the front of the queue and returns the value. If the queue is already empty, it cannot delete the value from the queue. In this case the function returns -1 as an error code.
Display function is used to display the content of the queue.
Following is the implementation of a Queue in C programming language using array. It has three functions for insert, delete and display.
Insert function takes the value to be inserted as an argument and inserts it to the end of the queue. If the queue is already full, it fails to insert the value and returns -1 as an error code otherwise it inserts the value and returns 0
Delete function deletes the value from the front of the queue and returns the value. If the queue is already empty, it cannot delete the value from the queue. In this case the function returns -1 as an error code.
Display function is used to display the content of the queue.
Source Code
/*
* C Program to implement a Queue using an array
*/
#include <stdio.h>
#define MAX 5
// Defines the structure MyQueue
struct MyQueue {
int data[MAX];
int rear;
};
// Declares a variable of type MyQueue
struct MyQueue queue1;
int main() {
int ch;
int value;
// Initialise the rear of queue with -1 (for empty queue)
queue1.rear = -1;
while (1) {
printf("\nQUEUE \n");
printf("1.Insert\n");
printf("2.Delete\n");
printf("3.Display\n");
printf("4.Exit \n");
printf("Enter your choice :");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Value to inset in to queue:");
scanf("%d", &value);
if (insert(value)==-1)
printf("Queue is full!");
break;
case 2:
value = delete();
if (value==-1)
printf("Queue is empty!");
else
printf("Deleted value: %d", value);
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("Invalid choice \n");
}
}
}
// insert function takes the value to be inserted to queue as argument and
// returns -1 if queue is already full and returns 0 if the value is inserted
int insert(int value) {
int retval;
// Check whether the queue is full
if (queue1.rear == MAX - 1)
retval = -1;
else {
queue1.rear++;
queue1.data[queue1.rear] = value;
retval = 0;
}
return retval;
}
// delete function returns -1 if the queue is empty otherwise returns the deleted value
int delete() {
int i;
int retval;
// Check whether the queue is empty
if (queue1.rear == - 1) {
retval = -1;
}
else {
retval=queue1.data[0];
// Shifts the values in the queue to left (front) by one
for (i=0;i<queue1.rear;i++)
queue1.data[i] = queue1.data[i+1];
queue1.rear --;
}
return retval;
}
// display function displays the content of the queue
int display() {
int i;
if (queue1.rear == - 1)
printf("Queue is empty \n");
else {
printf("Queue is : \n");
for (i = 0 ; i <= queue1.rear; i++)
printf("%d ", queue1.data[i]);
printf("\n");
}
}
* C Program to implement a Queue using an array
*/
#include <stdio.h>
#define MAX 5
// Defines the structure MyQueue
struct MyQueue {
int data[MAX];
int rear;
};
// Declares a variable of type MyQueue
struct MyQueue queue1;
int main() {
int ch;
int value;
// Initialise the rear of queue with -1 (for empty queue)
queue1.rear = -1;
while (1) {
printf("\nQUEUE \n");
printf("1.Insert\n");
printf("2.Delete\n");
printf("3.Display\n");
printf("4.Exit \n");
printf("Enter your choice :");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Value to inset in to queue:");
scanf("%d", &value);
if (insert(value)==-1)
printf("Queue is full!");
break;
case 2:
value = delete();
if (value==-1)
printf("Queue is empty!");
else
printf("Deleted value: %d", value);
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("Invalid choice \n");
}
}
}
// insert function takes the value to be inserted to queue as argument and
// returns -1 if queue is already full and returns 0 if the value is inserted
int insert(int value) {
int retval;
// Check whether the queue is full
if (queue1.rear == MAX - 1)
retval = -1;
else {
queue1.rear++;
queue1.data[queue1.rear] = value;
retval = 0;
}
return retval;
}
// delete function returns -1 if the queue is empty otherwise returns the deleted value
int delete() {
int i;
int retval;
// Check whether the queue is empty
if (queue1.rear == - 1) {
retval = -1;
}
else {
retval=queue1.data[0];
// Shifts the values in the queue to left (front) by one
for (i=0;i<queue1.rear;i++)
queue1.data[i] = queue1.data[i+1];
queue1.rear --;
}
return retval;
}
// display function displays the content of the queue
int display() {
int i;
if (queue1.rear == - 1)
printf("Queue is empty \n");
else {
printf("Queue is : \n");
for (i = 0 ; i <= queue1.rear; i++)
printf("%d ", queue1.data[i]);
printf("\n");
}
}
Output
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:100
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:200
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:300
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:400
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:500
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:600
Queue is full!
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:100
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:200
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:300
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:400
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:500
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :1
Value to inset in to queue:600
Queue is full!
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :3
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :3
Queue is :
100 200 300 400 500
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
Deleted value: 100
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
Deleted value: 200
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
Deleted value: 300
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
Deleted value: 400
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
Deleted value: 500
QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
1.Insert
2.Delete
3.Display
4.Exit
Enter your choice :2
No comments:
Post a Comment