Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में एक लिंक्ड सूची के विपरीत प्रिंट करने का एक दिलचस्प तरीका

एक लिंक्ड सूची एक डेटा संरचना है जो डेटा तत्वों को लिंक किए गए रूप में संग्रहीत करती है। लिंक की गई सूची के प्रत्येक नोड में एक डेटा तत्व और एक लिंक होता है।

एक लिंक्ड सूची का प्रिंट रिवर्स एक आम समस्या है जिसे समस्या समाधान में संबोधित करने की आवश्यकता है। तो, यहाँ हम c++ प्रोग्रामिंग भाषा में एक लिंक्ड सूची के विपरीत प्रिंट करने का एक दिलचस्प तरीका सीखेंगे।

आम तौर पर एक रिवर्स लिंक्ड सूची को प्रिंट करने के लिए सूची में संशोधन की आवश्यकता होती है या सूची के कई ट्रैवर्सिंग की आवश्यकता होती है, लेकिन इस पद्धति के लिए ऐसी किसी भी चीज़ की आवश्यकता नहीं होती है और यह केवल एक बार लिंक की गई सूची का पता लगाता है।

इस पद्धति का तर्क स्ट्रिंग को रिवर्स में प्रिंट करने के लिए कैरिज रिटर्न का उपयोग करना है। कैरिज रिटर्न प्रिंटर (प्रदर्शन के मामले में कर्सर) को लाइन पर स्थिति छोड़ने और एक स्क्रीन में एक विशिष्ट स्थान पर जाने के लिए एक आदेश है। अब, तर्क यह है कि n (सूची की लंबाई) को आगे बढ़ाया जाए और सूची के तत्वों को मुद्रित करने के लिए जगह छोड़ दी जाए। मुद्रित होने वाले पहले तत्व से पहले n -1 रिक्त स्थान शेष होना चाहिए। फिर दूसरे के लिए n-2 और इसी तरह।

आइए अब अवधारणा को स्पष्ट करने के लिए एक प्रोग्राम देखें,

उदाहरण

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void printReverse(struct Node** head_ref, int n) ;
void push(struct Node** head_ref, int new_data) ;
int printList(struct Node* head) ;
int main(){
   struct Node* head = NULL;
   push(&head, 2);
   push(&head, 7);
   push(&head, 3);
   push(&head, 5);
   push(&head, 4);
   push(&head, 6);
   printf("Given linked list:\n");
   int n = printList(head);
   printf("\nReversed Linked list:\n");
   printReverse(&head, n);
   return 0;
}
void printReverse(struct Node** head_ref, int n){
   int j = 0;
   struct Node* current = *head_ref;
   while (current != NULL) {
      for (int i = 0; i < 2 * (n - j); i++)
         cout<<" ";
      cout<<current->data<<"\r";
      current = current->next;
      j++;
   }
}
void push(struct Node** head_ref, int new_data){
   struct Node* new_node =
   (struct Node*)malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int printList(struct Node* head){
   int i = 0;
   struct Node* temp = head;
   while (temp != NULL) {
      printf("%d ", temp->data);
      temp = temp->next;
      i++;
   }
   return i;
}

आउटपुट

Given linked list:
6 4 5 3 7 2
Reversed Linked list:
2 7 3 5 4 6

  1. C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स गिनें

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

  1. सी ++ एसटीएल में रिवर्स फ़ंक्शन सूचीबद्ध करें

    इस लेख में हम C++ में काम करने, वाक्य रचना और सूची ::रिवर्स () फ़ंक्शन के उदाहरणों पर चर्चा करेंगे। STL में सूची क्या है सूची एक डेटा संरचना है जो अनुक्रम में कहीं भी निरंतर समय सम्मिलन और विलोपन की अनुमति देती है। सूचियों को डबल लिंक्ड सूचियों के रूप में लागू किया जाता है। सूचियाँ गैर-सन्निहित स्म

  1. सी ++ में रिकर्सन का उपयोग करके लिंक की गई सूची के वैकल्पिक नोड्स प्रिंट करें

    एक लिंक्ड सूची एक रैखिक डेटा संरचना है जो तत्व को गैर-सन्निहित स्मृति स्थानों में संग्रहीत करती है। प्रत्येक तत्व में लिंक की गई सूची के अगले तत्व के लिए एक सूचक होता है। उदाहरण - इस समस्या में, हमें एक लिंक्ड सूची दी जाती है और हमें इस लिंक्ड सूची के तत्वों को मुद्रित करने की आवश्यकता होती है ल