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 से विभाज्य है

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

  1. C++ में रिवर्स लिंक्ड लिस्ट II

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

  1. C++ में दी गई लिंक्ड सूची के अंतिम N नोड्स का गुणनफल खोजें

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