কম্পিউটার টিউটোরিয়াল

লিঙ্কড লিস্টের শেষ উপাদান প্রথমে নিয়ে আসা - সি++

একটি লিঙ্কড লিস্ট দেওয়া থাকলে তার শেষ নোডটি প্রথমে নিয়ে আসতে হবে।

উদাহরণ

ইনপুট: 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
  1. C++-তে লিংকড লিস্ট থেকে K দিয়ে বিভাজ্য সর্বোচ্চ ও ন্যূনতম এলিমেন্ট বের করা

  2. C++ STL-এ list::front() ফাংশন

  3. C++-এ লিংকড লিস্টের একটি অংশ রিভার্স করা (Reverse Linked List II)

  4. সি++ প্রোগ্রাম: লিংকড লিস্টের শেষ N নোডের গুণফল নির্ণয়