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

C भाषा में लिंक्ड लिस्ट के अंतिम k नोड्स को रिवर्स क्रम में प्रिंट करना (रिकर्सिव दृष्टिकोण)


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

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

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

C भाषा में लिंक्ड लिस्ट के अंतिम k नोड्स को रिवर्स क्रम में प्रिंट करना (रिकर्सिव दृष्टिकोण)

उदाहरण

Linked List: 29->34->43->56->88
Input: 2
Output: 88 56

जैसा कि निर्दिष्ट है रिकर्सिव दृष्टिकोण का उपयोग किया जाना चाहिए जो लिस्ट को अंत से ट्रैवर्स करेगा और लिस्ट को ट्रैवर्स करने की संख्या को ट्रैक करेगा और रिकर्सिव फंक्शन को पॉइंटर वेरिएबल द्वारा kवें मान तक कॉल किया जाएगा।

एल्गोरिदम

शुरुआत
चरण 1 → नोड वेरिएबल को संरचना टाइप का बनाएं
   int data घोषित करें
   *next का उपयोग करके नोड टाइप का पॉइंटर घोषित करें
चरण 2 → node* get(int data) फंक्शन घोषित करें
   malloc फंक्शन का उपयोग करके newnode बनाएं
   newnode->data = data सेट करें
   newnode->next = NULL सेट करें
   newnode रिटर्न करें
चरण 3 → void lastval(node* head, int& count, int k) फंक्शन घोषित करें
   यदि !head तो रिटर्न
   lastval(head->next, count, k) सेट करें
   count++ सेट करें
   यदि (count <= k) तो head->data प्रिंट करें
चरण 4 → main() में
   node* head = get(11) का उपयोग करके हेड जनरेट करें
   k और count को 0 सेट करें
   lastval(head,k,count) कॉल करें
समाप्त

उदाहरण

#include <stdio.h>
#include <stdlib.h>
// नोड की संरचना
struct node {
    int data;
    node* next;
};
// नया नोड प्राप्त करने का फंक्शन
node* get(int data) {
    struct node* newnode = (struct node*)malloc(sizeof(struct node));
    newnode->data = data;
    newnode->next = NULL;
    return newnode;
}
// नोड के अंतिम k मान प्रिंट करें
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);
    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);
    // अंतिम k नोड्स प्रिंट करें
    lastval(head, count, k);
    return 0;
}

आउटपुट

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

last 2 nodes of a list are : 522 421

  1. C भाषा में लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करना (इटरेटिव मेथड) C भाषा में लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करना (इटरेटिव मेथड)

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

  1. C भाषा में लिंक्ड लिस्ट को वास्तव में रिवर्स किए बिना रिवर्स प्रिंट करना C भाषा में लिंक्ड लिस्ट को वास्तव में रिवर्स किए बिना रिवर्स प्रिंट करना

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

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

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