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

সি++-এ সিঙ্গলি লিংকড লিস্টে (Singly Linked List) সর্বনিম্ন ও সর্বোচ্চ উপাদান বের করা

এই সমস্যাতে, আমাদের একটি সিঙ্গলি লিংকড লিস্ট দেওয়া আছে। আমাদের কাজ হলো সিঙ্গল লিংকড লিস্টে সর্বনিম্ন ও সর্বোচ্চ উপাদান বের করা।

উদাহরণ দিয়ে সমস্যা বোঝা যাক,

ইনপুট

Linked List: 5 -> 2 -> 7 -> 3 -> 9 -> 1 -> 4

আউটপুট

Smallest element = 1
Largest element = 9

সমাধানের পদ্ধতি

এই সমস্যার একটি সহজ সমাধান হলো লিংকড লিস্টটি নোড বাই নোড ট্রাভার্স (traverse) করা। এর আগে, আমরা maxElement এবং minElement ভেরিয়েবল দুটিকে প্রথম উপাদানের মান (head->data) দিয়ে ইনিশিয়ালাইজ করব। তারপর লিংকড লিস্টটি এলিমেন্ট বাই এলিমেন্ট ট্রাভার্স করব। এবং বর্তমান নোডের মান maxElement-এর সাথে তুলনা করব এবং বড় মানটি maxElement ভেরিয়েবলে সংরক্ষণ করব। minElement-এর জন্যও একই কাজ করব। ট্রাভার্সাল শেষ হলে দুটি মান প্রিন্ট করব।

সমাধান কোড:

উদাহরণ

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

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

void printLargestSmallestLinkedList(struct Node* head) {
    int maxElement = INT_MIN;
    int minElement = INT_MAX;
    while (head != NULL) {
        if (minElement > head->data)
            minElement = head->data;
        if (maxElement < head->data)
            maxElement = head->data;
        head = head->next;
    }
    cout<<"Smallest element in the linked list is : "<<minElement<<endl;
    cout<<"Largest element in the linked list is : "<<maxElement<<endl;
}

void push(struct Node** head, int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = (*head);
    (*head) = newNode;
}

int main() {
    struct Node* head = NULL;
    push(&head, 5);
    push(&head, 2);
    push(&head, 7);
    push(&head, 3);
    push(&head, 9);
    push(&head, 1);
    push(&head, 4);
    printLargestSmallestLinkedList(head);
    return 0;
}

আউটপুট

Smallest element in the linked list is : 1
Largest element in the linked list is : 9
  1. C++-এ সর্টেড ও রোটেটেড লিংকড লিস্টে রোটেশনের সংখ্যা গণনা

  2. সি++ প্রোগ্রাম: সিঙ্গলি লিংকড লিস্টের মধ্যবিন্দু রিকারসিভলি (Recursively) নির্ণয়

  3. C++-এ সিংলি সার্কুলার লিংকড লিস্টে ন্যূনতম ও সর্বোচ্চ মান বের করা

  4. C++-এ সিংলি লিংকড লিস্টে অল্টারনেট ওড-ইভেন নোড সাজানো