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

লিঙ্কড লিস্টে সকল শূন্য (0) প্রথমে নিয়ে আসা - সি++

একটি লিঙ্কড লিস্টে যাদুকর পূর্ণসংখ্যা এবং শূন্য থাকলে, সকল শূন্যকে লিস্টের শুরুতে নিয়ে আসতে হবে।

উদাহরণ

ইনপুট: 3→0→1→0→0→1→0→0→3→NULL

আউটপুট: 0→0→0→0→0→3→1→1→3→NULL

অ্যালগরিদম

  • লিস্ট ট্রাভার্স করুন, prev এবং curr পয়েন্টার রেখে।
  • যদি curr->data == 0 হয়, তবে সেটিকে নতুন হেড বানান।
  • prev->next = curr->next করুন।
  • curr->next = head; head = curr; করুন।
  • curr আপডেট করুন।

সি++ ইমপ্লিমেন্টেশন

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

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

void addNewNode(Node** head, int data) {
    Node* newNode = new Node{data, *head};
    *head = newNode;
}

void moveZeroesToFront(Node** head) {
    if (!*head) return;
    Node *prev = *head, *curr = (*head)->next;
    while (curr) {
        if (curr->data == 0) {
            Node* temp = curr;
            curr = curr->next;
            prev->next = curr;
            temp->next = *head;
            *head = temp;
        } else {
            prev = curr;
            curr = curr->next;
        }
    }
}

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

int main() {
    Node* head = nullptr;
    int vals[] = {3, 0, 1, 0, 0, 1, 0, 0, 3};
    for (int i = 8; i >= 0; i--) addNewNode(&head, vals[i]);
    moveZeroesToFront(&head);
    printList(head);
    return 0;
}

আউটপুট

0->0->0->0->0->3->1->1->3->NULL
  1. সি++-এ সার্কুলার লিংকড লিস্টের নোডগুলোর যোগফল (Sum)

  2. সি++-এ লিংকড লিস্টের অল্টারনেট নোডগুলোর যোগফল

  3. C++-এ অপরিবর্তনীয় লিঙ্কড লিস্ট উল্টে প্রিন্ট করা

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