लिंक्ड सूची का उपयोग करके कतार अतिप्रवाह और प्रवाह के तहत कतार से बचा जा सकता है।
C प्रोग्रामिंग लैंग्वेज में लिंक्ड लिस्ट की मदद से कतार में किए गए ऑपरेशन इस प्रकार हैं -
- सम्मिलित करें
- हटाएं
सम्मिलन
वाक्य रचना इस प्रकार है -
सिंटैक्स
&item :
Newnode = (node*) mallac (sizeof (node));
newnode ->data = item;
newnode ->link = NULL;
if ((front = = NULL) || (rear = = NULL)){
front= newnode;
rear = newnode;
}else{
Rear->link = newnode;
rear = newnode;
} हटाना
वाक्य रचना इस प्रकार है -
सिंटैक्स
if ((front= = NULL))
printf("Deletion is not possible, Queue is empty");
else{
temp = front;
front = front ->link;
free (temp);
} डिस्प्ले
वाक्य रचना इस प्रकार है -
सिंटैक्स
while (front! = NULL){
printf("%d", front ->data);
front = front->link;
} कार्यक्रम
लिंक्ड सूचियों का उपयोग करके कतार के लिए सी कार्यक्रम निम्नलिखित है -
#include <stdio.h>
#include <stdlib.h>
struct node{
int info;
struct node *ptr;
}*front,*rear,*temp,*front1;
int frontelement();
void enq(int data);
void deq();
void display();
void create();
int count = 0;
void main(){
int no, ch, e;
printf("\n 1 - Enqueue");
printf("\n 2 - Dequeue");
printf("\n 3 - Display");
printf("\n 4 - Exit");
printf("\n 5-front");
create();
while (1){
printf("\n Enter choice : ");
scanf("%d", &ch);
switch (ch){
case 1:
printf("Enter data : ");
scanf("%d", &no);
enq(no);
break;
case 2:
deq();
break;
case 3:
display();
break;
case 4:
exit(0);
break;
case 5:
e = frontelement();
if (e != 0)
printf("Front element : %d", e);
else
printf("\n No front element in Queue");
break;
default:
printf("Wrong choice, Try again ");
break;
}
}
}
void enq(int data){
if (rear == NULL){
rear = (struct node *)malloc(1*sizeof(struct node));
rear->ptr = NULL;
rear->info = data;
front = rear;
}else{
temp=(struct node *)malloc(1*sizeof(struct node));
rear->ptr = temp;
temp->info = data;
temp->ptr = NULL;
rear = temp;
}
count++;
}
void display(){
front1 = front;
if ((front1 == NULL) && (rear == NULL)){
printf("Queue is empty");
return;
}
while (front1 != rear){
printf("%d ", front1->info);
front1 = front1->ptr;
}
if (front1 == rear)
printf("%d", front1->info);
}
void deq(){
front1 = front;
if (front1 == NULL){
printf("\n Error");
return;
}
else
if (front1->ptr != NULL){
front1 = front1->ptr;
printf("\n Dequeued value : %d", front->info);
free(front);
front = front1;
}else{
printf("\n Dequeued value : %d", front->info);
free(front);
front = NULL;
rear = NULL;
}
count--;
}
int frontelement(){
if ((front != NULL) && (rear != NULL))
return(front->info);
else
return 0;
} आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
1 - Enque 2 - Deque 3 – Display 4 - Exit 5 - Front element Enter choice: 1 Enter data: 14 Enter choice: 1 Enter data: 85 Enter choice: 1 Enter data: 38 Enter choice: 5 Front element: 14 Enter choice: 3 14 85 38 Enter choice: 2 Dequed value: 14 Enter choice: 3 Enter choice: 4