लिंक्ड सूची का उपयोग करके कतार अतिप्रवाह और प्रवाह के तहत कतार से बचा जा सकता है।
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