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

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

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

पुनरावृत्त विधि वह है जो आम तौर पर उन लूपों का उपयोग करती है जिन्हें तब तक निष्पादित किया जाता है जब तक कि स्थिति मान 1 या सत्य न हो।

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

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

उदाहरण

Input: 29->34->43->56->88
Output: 29 43 88

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

नीचे दिया गया कोड दिए गए एल्गोरिथम के c कार्यान्वयन को दर्शाता है।

एल्गोरिदम

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *next
   Step 2 -> Declare Function void alternate(struct node* head)
      Set int count = 0
      Loop While (head != NULL)
      IF count % 2 = 0
         Print head->data
         Set count++
         Set head = head->next
      End
   Step 3 -> Declare Function void push(struct node** header, int newdata)
      Create newnode using malloc function
      Set newnode->data = newdata
      Set newnode->next = (*header)
      set (*header) = newnode
   step 4 -> In Main()
      create head pointing to first node using struct node* head = NULL
      Call alternate(head)
STOP

उदाहरण

#include <stdio.h>
#include <stdlib.h>
//creating structure of a node
struct node {
   int data;
   struct node* next;
};
//function to find and print alternate node
void alternate(struct node* head) {
   int count = 0;
   while (head != NULL) {
      if (count % 2 == 0)
         printf(" %d ", head->data);
      count++;
      head = head->next;
   }
}
//pushing element into the list
void push(struct node** header, int newdata) {
   struct node* newnode =
   (struct node*)malloc(sizeof(struct node));
   newnode->data = newdata;
   newnode->next = (*header);
   (*header) = newnode;
}
int main() {
   printf("alternate nodes are :");
   struct node* head = NULL;
   push(&head, 1); //calling push function to push elements in list
   push(&head, 9);
   push(&head, 10);
   push(&head, 21);
   push(&head, 80);
   alternate(head);
   return 0;
}

आउटपुट

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

alternate nodes are : 80 10 1

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

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

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

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

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

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