Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी भाषा में लिंक्ड सूची का उपयोग करके कतार की व्याख्या करें

लिंक्ड सूची का उपयोग करके कतार अतिप्रवाह और प्रवाह के तहत कतार से बचा जा सकता है।

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

  1. संरचना अवधारणा का उपयोग करके सी भाषा में बिट फ़ील्ड की व्याख्या करें

    बिट फ़ील्ड का उपयोग बिट्स के संदर्भ में चर के आकार को निर्दिष्ट करने के लिए किया जाता है। आम तौर पर, इसे एक संरचना के अंदर परिभाषित किया जाता है। बिट फ़ील्ड:1 बाइट=8 बिट उदाहरण के लिए, एक उदाहरण नीचे समझाया गया है - Struct info{    int x:2; }; यहाँ, x 2बिट्स पर कब्जा कर रहा है। किसी

  1. सी . में लिंक्ड सूची का उपयोग कर प्राथमिकता कतार

    हमें डेटा और प्राथमिकता एक पूर्णांक मान के रूप में दी जाती है और कार्य दी गई प्राथमिकता के अनुसार एक लिंक्ड सूची बनाना और परिणाम प्रदर्शित करना है। Queue एक FIFO डेटा संरचना है जिसमें जो तत्व पहले डाला जाता है वह सबसे पहले निकाला जाता है। प्राथमिकता कतार एक प्रकार की कतार है जिसमें प्राथमिकता के आध

  1. सी ++ में डबल लिंक्ड सूची का उपयोग कर प्राथमिकता कतार

    हमें डेटा और प्राथमिकता एक पूर्णांक मान के रूप में दी जाती है और कार्य दी गई प्राथमिकता के अनुसार एक डबल लिंक्ड सूची बनाना और परिणाम प्रदर्शित करना है। Queue एक FIFO डेटा संरचना है जिसमें जो तत्व पहले डाला जाता है वह सबसे पहले निकाला जाता है। प्राथमिकता कतार एक प्रकार की कतार है जिसमें प्राथमिकता क