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

C++ में दिए गए लिंक्ड लिस्ट के अंतिम तत्व को सामने ले जाना


एक लिंक्ड लिस्ट दी गई है, हमें अंतिम तत्व को सामने ले जाना है। आइए एक उदाहरण देखते हैं।

इनपुट

1 -> 2 -> 3 -> 4 -> 5 -> NULL

आउटपुट

5 -> 1 -> 2 -> 3 -> 4 -> NULL

एल्गोरिदम

  • लिंक्ड लिस्ट आरंभ करें।
  • यदि लिंक्ड लिस्ट खाली है या इसमें सिंगल नोड है तो वापस लौटें।
  • लिंक्ड लिस्ट के अंतिम नोड और अंतिम से पहले के नोड को खोजें।
  • अंतिम नोड को नया हेड बनाएं।
  • अंतिम से पहले के नोड का लिंक अपडेट करें।

कार्यान्वयन

निम्नलिखित C++ में उपरोक्त एल्गोरिदम का कार्यान्वयन है:

#include <bits/stdc++.h> 
using namespace std; 

struct Node { 
    int data; 
    struct Node* next; 
}; 

void moveFirstNodeToEnd(struct Node** head) { 
    if (*head == NULL || (*head)->next == NULL) { 
        return; 
    } 
    struct Node* secondLastNode = *head; 
    struct Node* lastNode = *head; 
    while (lastNode->next != NULL) { 
        secondLastNode = lastNode; 
        lastNode = lastNode->next; 
    } 
    secondLastNode->next = NULL; 
    lastNode->next = *head; 
    *head = lastNode; 
} 

void addNewNode(struct Node** head, int new_data) { 
    struct Node* newNode = new Node; 
    newNode->data = new_data; 
    newNode->next = *head; 
    *head = newNode; 
} 

void printLinkedList(struct Node* node) { 
    while (node != NULL) { 
        cout << node->data << "->"; 
        node = node->next; 
    } 
    cout << "NULL" << endl; 
} 

int main() { 
    struct Node* head = NULL; 
    addNewNode(&head, 1); 
    addNewNode(&head, 2); 
    addNewNode(&head, 3); 
    addNewNode(&head, 4); 
    addNewNode(&head, 5); 
    addNewNode(&head, 6); 
    addNewNode(&head, 7); 
    addNewNode(&head, 8); 
    addNewNode(&head, 9); 
    moveFirstNodeToEnd(&head); 
    printLinkedList(head); 
    return 0; 
}

आउटपुट

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

1->9->8->7->6->5->4->3->2->NULL

  1. C++ में दिए गए नंबर k से विभाज्य लिंक्ड लिस्ट के अधिकतम और न्यूनतम एलिमेंट C++ में दिए गए नंबर k से विभाज्य लिंक्ड लिस्ट के अधिकतम और न्यूनतम एलिमेंट

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें एलिमेंट्स पॉइंटर्स के माध्यम से जुड़े होते हैं। लिंक्ड लिस्ट के प्रत्येक एलिमेंट या नोड में एक डेटा भाग और लिंक होता है, या हम कह सकते हैं कि क्रम में अगले एलिमेंट का पॉइंटर होता है। एलिमेंट्स मेमोरी में नॉन-कंटीगुअस स्थान ले सकते हैं। हमें एक सिंगली लिं

  1. - C++ में लिंक्ड लिस्ट का भाग उलटना (Reverse Linked List II)

    मान लीजिए हमारे पास एक लिंक्ड लिस्ट है। हमें स्थिति m से n तक के नोड्स को उलटना है। हमें इसे एक ही पास (one pass) में करना है। यदि लिस्ट [1,2,3,4,5] है और m = 2, n = 4, तो परिणाम [1,4,3,2,5] होगा। आइए चरण देखें: दो विधियां होंगी: reverseN() और reverseBetween()। reverseBetween() मुख्य विधि के रूप म

  1. - C++ प्रोग्राम: लिंक्ड लिस्ट के अंतिम N नोड्स का गुणनफल ज्ञात करना

    मान लें हमारे पास लिंक्ड लिस्ट में कुछ तत्व हैं। हमें अंतिम n तत्वों का गुणनफल परिणाम ज्ञात करना है। n का मान भी दिया गया है। इसलिए यदि सूची [5, 7, 3, 5, 6, 9] की तरह है, और n = 3, तो परिणाम 5 * 6 * 9 = 270 होगा। प्रक्रिया सीधी है। हम बस बाईं ओर से शुरू होने वाले वर्तमान तत्व को पढ़ते हैं, फिर तत्व