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

लिंक्ड लिस्ट के वैकल्पिक नोड्स का गुणनफल


n नोड्स दिए जाने पर, लिंक्ड लिस्ट में वैकल्पिक नोड्स का गुणनफल प्रिंट करना है। प्रोग्राम को केवल वैकल्पिक नोड्स का गुणनफल प्रिंट करना चाहिए बिना वास्तव में नोड्स के स्थान बदले।

उदाहरण

इनपुट: 10 20 30 40 50 60
आउटपुट: 15000

उपरोक्त उदाहरण में, पहले नोड से शुरू करके जो 10 है, वैकल्पिक नोड्स 10, 30, 50 हैं और उनका गुणनफल 10×30×50 = 15000 है।

लिंक्ड लिस्ट के वैकल्पिक नोड्स का गुणनफल

उपरोक्त आरेख में, नीले रंग के नोड्स वैकल्पिक नोड्स हैं यदि हम पहले नोड से शुरू करते हैं और लाल रंग के नोड्स गैर-विचारणीय नोड्स हैं।

प्रयुक्त दृष्टिकोण

  • एक अस्थायी पॉइंटर लें, मान लें temp, नोड टाइप का
  • इस temp पॉइंटर को पहले नोड पर सेट करें जिसे हेड पॉइंटर इंगित करता है
  • temp को temp → next → next पर तब तक ले जाएँ जब तक स्थिति (temp→next != NULL && temp != NULL && temp→next→next != NULL) सत्य रहती है
  • product = product × (temp→data) सेट करें

एल्गोरिदम

शुरुआत
चरण 1 → नोड की संरचना बनाएं और temp, next, head को संरचना नोड के पॉइंटर के रूप में
   struct node
      int data
      struct node *next, *head, *temp
   समाप्त
चरण 2 → लिस्ट में नोड डालने का फंक्शन घोषित करें
   void insert(int val)
      struct node* newnode = (struct node*)malloc(sizeof(struct node))
      newnode->data = val
      यदि head = NULL तो
         head = newnode सेट करें
         head->next = NULL सेट करें
      समाप्त
      अन्यथा
         temp = head सेट करें
         लूप जब तक temp->next != NULL
            temp = temp->next सेट करें
         समाप्त
         newnode->next = NULL सेट करें
         temp->next = newnode सेट करें
      समाप्त
चरण 3 → लिस्ट प्रदर्शित करने का फंक्शन घोषित करें
   void display()
      यदि head = NULL तो
         "no node" प्रिंट करें
      समाप्त
      अन्यथा
         temp = head सेट करें
         लूप जब तक temp != NULL
            temp->data प्रिंट करें
            temp = temp->next सेट करें
         समाप्त
      समाप्त
चरण 4 → वैकल्पिक नोड्स ढूंढने का फंक्शन घोषित करें
   void alternate()
      int product घोषित करें
      temp = head सेट करें
      product = head->data सेट करें
      लूप जब तक (temp->next != NULL && temp != NULL && temp->next->next != NULL)
         temp = temp->next->next सेट करें
         product = product * (temp->data) सेट करें
      समाप्त
      product प्रिंट करें
चरण 5 → main() में
   struct node* head = NULL का उपयोग करके नोड्स बनाएं
   नोड डालने के लिए insert(10) कॉल करें
   लिस्ट प्रदर्शित करने के लिए display() कॉल करें
   वैकल्पिक नोड्स का गुणनफल ढूंढने के लिए alternate() कॉल करें
समाप्त

कोड

#include <stdio.h>
#include <stdlib.h>

// नोड की संरचना
struct node {
    int data;
    struct node *next;
}*head,*temp;

// लिस्ट में नोड्स डालने का फंक्शन
void insert(int val) {
    struct node* newnode = (struct node*)malloc(sizeof(struct node));
    newnode->data = val;
    if(head == NULL) {
        head = newnode;
        head->next = NULL;
    } else {
        temp = head;
        while(temp->next != NULL) {
            temp = temp->next;
        }
        newnode->next = NULL;
        temp->next = newnode;
    }
}

// लिस्ट प्रदर्शित करने का फंक्शन
void display() {
    if(head == NULL)
        printf("no node ");
    else {
        temp = head;
        while(temp != NULL) {
            printf("%d ", temp->data);
            temp = temp->next;
        }
    }
}

// वैकल्पिक एलिमेंट्स ढूंढने का फंक्शन
void alternate() {
    int product;
    temp = head;
    product = head->data;
    while(temp->next != NULL && temp != NULL && temp->next->next != NULL) {
        temp = temp->next->next;
        product = product * (temp->data);
    }
    printf("\nproduct of alternate nodes is %d : ", product);
}

int main() {
    // लिस्ट बनाना
    struct node* head = NULL;
    // लिस्ट में एलिमेंट्स डालना
    insert(10);
    insert(20);
    insert(30);
    insert(40);
    insert(50);
    insert(60);
    // लिस्ट प्रदर्शित करना
    printf("linked list is : ");
    display();
    // गुणनफल ढूंढने के लिए alternate फंक्शन कॉल करना
    alternate();
    return 0;
}

आउटपुट

linked list is : 10 20 30 40 50 60
product of alternate nodes is : 15000

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

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

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

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

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

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