একটি লিঙ্কড লিস্ট দেওয়া থাকলে তার শেষ নোডটি প্রথমে নিয়ে আসতে হবে।
উদাহরণ
ইনপুট: 1→2→3→4→5→NULL
আউটপুট: 5→1→2→3→4→NULL
অ্যালগরিদম
- লিস্ট খালি বা একক নোড হলে ফেরত যান।
- শেষ নোড এবং sevesেকেন্ড লাস্ট নোড খুঁজুন।
- শেষ নোডকে নতুন হেড করুন।
- সেকেন্ড লাস্ট নোডের
next = NULLকরুন। - নতুন হেডের
nextপুরনো হেডে সংযুক্ত করুন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* next;
};
void moveLastToFront(Node** head) {
if (!*head || !(*head)->next) return;
Node *secondLast = *head, *last = *head;
while (last->next) {
secondLast = last;
last = last->next;
}
secondLast->next = nullptr;
last->next = *head;
*head = last;
}
void addNewNode(Node** head, int data) {
Node* newNode = new Node{data, *head};
*head = newNode;
}
void printList(Node* node) {
while (node) { cout << node->data << "->"; node = node->next; }
cout << "NULL" << endl;
}
int main() {
Node* head = nullptr;
for (int i = 9; i >= 1; i--) addNewNode(&head, i); // 1->2->...->9
moveLastToFront(&head);
printList(head); // 9->1->2->3->4->5->6->7->8->NULL
return 0;
}
আউটপুট
9->1->2->3->4->5->6->7->8->NULL