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

C भाषा में दिए गए इंडेक्स पर लिंक्ड लिस्ट के नोड्स प्रिंट करना


हमें दिए गए इंडेक्स पर लिंक्ड लिस्ट के नोड्स का डेटा प्रिंट करना है। ऐरे के विपरीत लिंक्ड लिस्ट में आमतौर पर इंडेक्स नहीं होते इसलिए हमें पूरी लिंक्ड लिस्ट को ट्रैवर्स करना होगा और जब हम किसी विशेष इंडेक्स पर पहुंचें तो डेटा प्रिंट करना होगा।

मान लें, लिस्ट में नोड्स 29, 34, 43, 56 और 88 हैं और इंडेक्स के मान 1, 2 और 4 हैं तो आउटपुट इन इंडेक्स पर नोड्स होंगे यानी 34, 43 और 88।

C भाषा में दिए गए इंडेक्स पर लिंक्ड लिस्ट के नोड्स प्रिंट करना

उदाहरण

Linked list: 29->34->43->56->88
Input: 1 2 4
Output: 34 43 88

उपरोक्त लिंक्ड लिस्ट प्रतिनिधित्व में पीले हाइलाइट किए गए नोड्स वे नोड्स हैं जिन्हें प्रिंट किया जाना है या जो किसी विशेष इंडेक्स पर हैं।

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

एल्गोरिदम

शुरुआत
चरण 1 → नोड वेरिएबल को संरचना टाइप का बनाएं
   int data घोषित करें
   *next का उपयोग करके नोड टाइप का पॉइंटर घोषित करें
चरण 2 → struct node* intoList(int data) बनाएं
   malloc का उपयोग करके newnode बनाएं
   newnode->data = data सेट करें
   newnode->next = NULL
   newnode रिटर्न करें
चरण 3 → void displayList(struct node *catchead) फंक्शन घोषित करें
   struct node *temp बनाएं
   यदि catchead = NULL तो "list is empty" प्रिंट करें और रिटर्न करें
   temp = catchead सेट करें
   लूप जब तक (temp != NULL)
      temp->data प्रिंट करें
      temp = temp->next सेट करें
   लूप समाप्त
चरण 4 → int search(int key, struct node *head) फंक्शन घोषित करें
   int index सेट करें
   struct node *newnode बनाएं
   index = 0 और newnode = head सेट करें
   लूप जब तक (newnode != NULL && newnode->data != key)
      index++ सेट करें
      newnode = newnode->next सेट करें
   लूप समाप्त
   रिटर्न (newnode != NULL) ? index : -1
चरण 5 → main() में
   struct node* head = intoList(9) का उपयोग करके नोड बनाएं
   displayList(head) कॉल करें
   index = search(24,head) सेट करें
   यदि (index >= 0) तो index प्रिंट करें अन्यथा "not found in the list" प्रिंट करें
समाप्त

उदाहरण

#include <stdio.h>
#include <stdlib.h>
// नोड की संरचना
struct node {
    int data;
    struct node *next;
};
struct node* intoList(int data) {
    struct node* newnode = (struct node*)malloc(sizeof(struct node));
    newnode->data = data;
    newnode->next = NULL;
    return newnode;
}
// लिस्ट प्रदर्शित करने का फंक्शन
void displayList(struct node *catchead) {
    struct node *temp;
    if (catchead == NULL) {
        printf("List is empty.\n");
        return;
    }
    printf("elements of list are : ");
    temp = catchead;
    while (temp != NULL) {
        printf("%d ", temp->data);
        temp = temp->next;
    }
    printf("\n");
}
// एलिमेंट खोजने का फंक्शन
int search(int key,struct node *head) {
    int index;
    struct node *newnode;
    index = 0;
    newnode = head;
    while (newnode != NULL && newnode->data != key) {
        index++;
        newnode = newnode->next;
    }
    return (newnode != NULL) ? index : -1;
}
int main() {
    int index;
    struct node* head = intoList(9);
    head->next = intoList(76);
    head->next->next = intoList(13);
    head->next->next->next = intoList(24);
    head->next->next->next->next = intoList(55);
    head->next->next->next->next->next = intoList(109);
    displayList(head);
    index = search(24,head);
    if (index >= 0)
        printf("%d found at position %d\n", 24, index);
    else
        printf("%d not found in the list.\n", 24);
    index = search(55,head);
    if (index >= 0)
        printf("%d found at position %d\n", 55, index);
    else
        printf("%d not found in the list.\n", 55);
}

आउटपुट

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

elements of list are : 9 76 13 24 55 109
24 found at position 3
55 found at position 4

  1. C भाषा में दिए गए लेवल पर लीफ नोड्स प्रिंट करना C भाषा में दिए गए लेवल पर लीफ नोड्स प्रिंट करना

    कार्य में उपयोगकर्ता द्वारा निर्दिष्ट दिए गए लेवल k पर बाइनरी ट्री के लीफ नोड्स प्रिंट करना शामिल है। लीफ नोड्स अंतिम नोड्स होते हैं जिनके लेफ्ट और राइट पॉइंटर NULL होते हैं जिसका अर्थ है कि वह विशेष नोड पैरेंट नोड नहीं है। उदाहरण इनपुट: 11 22 33 66 44 88 77 आउटपुट: 88 77 यहां, k ट्री का लेवल द

  1. C++ में दिए गए नोड से दूरी K पर सभी नोड्स प्रिंट करना C++ में दिए गए नोड से दूरी K पर सभी नोड्स प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री, एक टारगेट नोड और एक पूर्णांक K दिया गया है। हमें ट्री के उन सभी नोड्स को प्रिंट करना है जो टारगेट नोड से दूरी K पर हैं। बाइनरी ट्री बाइनरी ट्री एक विशेष ट्री है जिसके प्रत्येक नोड में अधिकतम दो नोड्स होते हैं (एक/दो/कोई नहीं)। उदाहरण K = 2 टारगेट नोड: 9 आउटपुट

  1. C++ में पुनरावृत्ति का उपयोग करके लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करें C++ में पुनरावृत्ति का उपयोग करके लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करें

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जो तत्वों को गैर-सन्निहित मेमोरी स्थानों में संग्रहीत करती है। प्रत्येक तत्व में लिंक्ड लिस्ट के अगले तत्व का एक पॉइंटर होता है। उदाहरण - इस समस्या में, हमें एक लिंक्ड लिस्ट दी गई है और हमें इस लिंक्ड लिस्ट के तत्वों को प्रिंट करना है लेकिन केवल वैकल्पिक तत्वों