कार्य पुनरावर्ती फ़ंक्शन का उपयोग करके किसी दिए गए लिंक की गई सूची के रिवर्स को प्रिंट करना है। कार्यक्रम को रिवर्स प्रिंट करना चाहिए लेकिन सूची को उल्टा नहीं करना चाहिए, जिसका अर्थ है कि नोड्स का क्रम समान रहता है
यहां, प्रोग्राम पहले नोड के पते वाले हेड पॉइंटर को अगले नोड में तब तक ले जाएगा जब तक कि 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