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