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

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

कार्य रिकर्सिव दृष्टिकोण का उपयोग करके लिंक की गई सूची के अंत से शुरू होने वाले k नोड्स को प्रिंट करना है।

पुनरावर्ती दृष्टिकोण वह है जिसमें फ़ंक्शन कॉल किए जाने तक बार-बार कॉल करता है और इसलिए परिणाम संग्रहीत करता है।

मान लीजिए, सूची में 29, 34, 43, 56 और 88 नोड हैं और k का मान 2 है, जो आउटपुट से अंतिम k नोड होगा जैसे कि 56 और 88।

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

उदाहरण

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

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

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

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

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

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

    इस समस्या में, हमें एक वृत्ताकार लिंक्ड सूची दी गई है। हमारा काम सर्कुलर लिंक्ड लिस्ट के नोड्स के योग को खोजने के लिए एक प्रोग्राम बनाना है। हमें केवल लिंक की गई सूची के सभी नोड मानों को जोड़ने की आवश्यकता है। कुछ महत्वपूर्ण परिभाषाएं लिंक्ड लिस्ट डेटा संरचनाओं का एक क्रम है, जो लिंक के माध्य