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

सी भाषा में वास्तव में उलटे बिना एक लिंक्ड सूची के विपरीत प्रिंट करें

कार्य पुनरावर्ती फ़ंक्शन का उपयोग करके किसी दिए गए लिंक की गई सूची के रिवर्स को प्रिंट करना है। कार्यक्रम को रिवर्स प्रिंट करना चाहिए लेकिन सूची को उल्टा नहीं करना चाहिए, जिसका अर्थ है कि नोड्स का क्रम समान रहता है

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

सी भाषा में वास्तव में उलटे बिना एक लिंक्ड सूची के विपरीत प्रिंट करें

उदाहरण

Input: 29 34 43 56
Output: 56 43 34 29

सबसे पहले, नोड्स को सूची में डाला जाता है और एक पॉइंटर सम्मिलित किए गए नोड्स को इंगित करना शुरू कर देगा। अंतिम सूची बनने के बाद मान लें कि अस्थायी पॉइंटर को पहले नोड पॉइंटर के साथ आरंभ किया जाएगा और यह तब तक बढ़ता रहता है जब तक कि नोड का अगला पता NULL नहीं हो जाता है क्योंकि अंतिम नोड कुछ भी नहीं इंगित करता है और अंतिम नोड से सूची को हेड पॉइंटर तक ट्रेस किया जाता है। यह वास्तव में किसी सूची को उलटे बिना सूची का उल्टा प्रदर्शित करेगा।

नीचे दिया गया कोड दिए गए एल्गोरिथम के c कार्यान्वयन को दर्शाता है।

एल्गोरिदम

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *next
   Step 2 ->Declare function void reverse(node* head)
      IF head == NULL
         return
      Call reverse(head->next)
      Print head->data
   Step 3 -> Declare Function void push(node** header, char newdata)
      Allocate memory using malloc
      Set newnode->data = newdata
      Set newnode->next = (*header)
      Set (*header) = newnode
   Step 4 ->In Main()
      Create list using node* head = NULL
      Insert elements through push(&head, 56)
      Call reverse(head)
STOP

उदाहरण

#include<stdio.h>
#include<stdlib.h>
//creating structure for a node
struct node {
   int data;
   node* next;
};
//function to print reverse of the data in the list
void reverse(node* head) {
   if (head == NULL)
      return;
   reverse(head->next);
   printf("%d ", head->data);
}
//function to puch the node in the list
void push(node** header, char newdata) {
   struct node* newnode = (struct node*)malloc(sizeof(struct node));
   newnode->data = newdata;
   newnode->next = (*header);
   (*header) = newnode;
}
int main() {
   node* head = NULL;
   push(&head, 56); //calling function to push 56 in the list
   push(&head, 43);
   push(&head, 34);
   push(&head, 29);
   reverse(head);
   return 0;
}

आउटपुट

यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा।

reverse of a linked list 56 43 34 29

  1. लिंक्ड सूची के अंतिम k नोड्स को C भाषा में रिवर्स ऑर्डर रिकर्सिव अप्रोच में प्रिंट करें

    कार्य रिकर्सिव दृष्टिकोण का उपयोग करके लिंक की गई सूची के अंत से शुरू होने वाले k नोड्स को प्रिंट करना है। पुनरावर्ती दृष्टिकोण वह है जिसमें फ़ंक्शन कॉल किए जाने तक बार-बार कॉल करता है और इसलिए परिणाम संग्रहीत करता है। मान लीजिए, सूची में 29, 34, 43, 56 और 88 नोड हैं और k का मान 2 है, जो आउटपुट से

  1. सी भाषा में लिंक्ड सूची (पुनरावृत्त विधि) के वैकल्पिक नोड्स को प्रिंट करें

    इस समस्या में, प्रोग्राम को दी गई लिंक्ड सूची से उन विकल्पों को प्रिंट करना चाहिए जो एक को दूसरे को प्रिंट करना छोड़ रहे हैं और इसी तरह पुनरावृत्त विधि का उपयोग कर रहे हैं। पुनरावृत्त विधि वह है जो आम तौर पर उन लूपों का उपयोग करती है जिन्हें तब तक निष्पादित किया जाता है जब तक कि स्थिति मान 1 या सत्

  1. सी प्रोग्राम में अतिरिक्त स्थान और संशोधन के बिना एक लिंक्ड सूची का उल्टा प्रिंट करें।

    कार्य अतिरिक्त स्थान का उपयोग किए बिना लिंक की गई सूची के अंत से शुरू होने वाले नोड्स को प्रिंट करना है, जिसका अर्थ है कि कोई अतिरिक्त चर नहीं होना चाहिए, इसके बजाय पहले नोड को इंगित करने वाले हेड पॉइंटर को स्थानांतरित कर दिया जाएगा। उदाहरण Input: 10 21 33 42 89 Output: 89 42 33 21 10 लिंक की गई