कार्य रिकर्सिव दृष्टिकोण का उपयोग करके लिंक की गई सूची के अंत से शुरू होने वाले k नोड्स को प्रिंट करना है।
पुनरावर्ती दृष्टिकोण वह है जिसमें फ़ंक्शन कॉल किए जाने तक बार-बार कॉल करता है और इसलिए परिणाम संग्रहीत करता है।
मान लीजिए, सूची में 29, 34, 43, 56 और 88 नोड हैं और k का मान 2 है, जो आउटपुट से अंतिम k नोड होगा जैसे कि 56 और 88।
उदाहरण
Linked List: 29->34->43->56->88 Input: 2 Output: 88 56
जैसा कि निर्दिष्ट किया गया है, पुनरावर्ती दृष्टिकोण का उपयोग किया जाना चाहिए जो सूची को पार करने की संख्या का ट्रैक रखते हुए अंत से सूची को पार करेगा और पुनरावर्ती फ़ंक्शन को पॉइंटर चर द्वारा kth मान तक कॉल किया जाएगा।
नीचे दिया गया कोड दिए गए एल्गोरिथम के c कार्यान्वयन को दर्शाता है।
एल्गोरिदम
START Step 1 -> create node variable of type structure Declare int data Declare pointer of type node using *next Step 2 -> Declare function as node* get(int data) Create newnode using malloc function Set newnode->data = data Set newnode->next = NULL return newnode step 3 -> Declare function void lastval(node* head, int& count, int k) IF !head Return Set lastval(head->next, count, k) Set count++ IF (count <= k) Print head->data Step 4 -> In Main() Generate head using node* head = get(11) Set k and count to 0 Call lastval(head,k,count) STOP
उदाहरण
#include<stdio.h> #include<stdlib.h> // Structure of a node struct node { int data; node* next; }; // Function to get a new node node* get(int data) { struct node* newnode = (struct node*)malloc(sizeof(struct node)); newnode->data = data; newnode->next = NULL; return newnode; } //print the last k values of a node void lastval(node* head, int& count, int k) { if (!head) return; lastval(head->next, count, k); count++; if (count <= k) printf("%d ", head->data); } int main() { node* head = get(11); //inserting elements into the list head->next = get(243); head->next->next = get(321); head->next->next->next = get(421); head->next->next->next->next = get(522); int k = 2, count = 0; printf(" last %d nodes of a list are :",k); // print last k nodes lastval(head, count, k); return 0; }
आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा।
last 2 nodes of a list are :522 421