समस्या विवरण
कार्य लिंक्ड लिस्ट के अंत से शुरू होने वाले नोड्स को प्रिंट करना है बिना अतिरिक्त स्पेस का उपयोग किए, जिसका अर्थ है कि कोई अतिरिक्त वेरिएबल नहीं होना चाहिए, इसके बजाय हेड पॉइंटर जो पहले नोड को इंगित करता है, को स्थानांतरित किया जाएगा।
उदाहरण
इनपुट: 10 21 33 42 89 आउटपुट: 89 42 33 21 10
एल्गोरिदम
शुरुआत
चरण 1: नोड वेरिएबल को संरचना के प्रकार का बनाएं
int data घोषित करें
*next का उपयोग करके नोड प्रकार का पॉइंटर घोषित करें
चरण 2: int get(struct node* head) फंक्शन घोषित करें
int count = 0 वेरिएबल घोषित करें
struct node *newme = head घोषित करें
जब तक newme != NULL लूप
count को 1 से बढ़ाएं
newme = newme->next सेट करें
अंत
count वापस करें
चरण 3: void push(node** headref, char newdata) फंक्शन घोषित करें
malloc का उपयोग करके मेमोरी आवंटित करें
newnode->data = newdata सेट करें
newnode->next = (*headref) सेट करें
(*headref) = newnode सेट करें
चरण 4: int getN(struct node* head, int n) फंक्शन घोषित करें
struct node* cur = head घोषित करें
i = 0 से n-2 तक लूप और cur != NULL
cur = cur->next सेट करें
अंत
cur->data वापस करें
चरण 5: void reverse(node *head) फंक्शन घोषित करें
int n = get(head) घोषित करें
i = n से 1 तक लूप
getN(head, i) प्रिंट करें
अंत
चरण 6: main() में
node* head = NULL का उपयोग करके लिस्ट बनाएं
push(&head, 89) के माध्यम से तत्व डालें
reverse(head) कॉल करें
रोकें
C प्रोग्राम उदाहरण
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node* next;
};
void push(struct node** headref, int newdata) {
struct node* newnode = (struct node*) malloc(sizeof(struct node));
newnode->data = newdata;
newnode->next = (*headref);
(*headref) = newnode;
}
int get(struct node* head) {
int count = 0;
struct node* newme = head;
while (newme != NULL){
count++;
newme = newme->next;
}
return count;
}
int getN(struct node* head, int n) {
struct node* cur = head;
for (int i = 0; i < n-1 && cur != NULL; i++)
cur = cur->next;
return cur->data;
}
void reverse(node *head) {
int n = get(head);
for (int i = n; i >= 1; i--)
printf("%d ", getN(head, i));
}
int main() {
struct node* head = NULL;
push(&head, 89);
push(&head, 42);
push(&head, 33);
push(&head, 21);
push(&head, 10);
reverse(head);
return 0;
}
आउटपुट
उपरोक्त प्रोग्राम चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
89 42 33 21 10