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

C++-এ স্ট্যাক ব্যবহার করে লিংকড লিস্ট রিভার্স করা


লিংকড লিস্ট ডাইনামিকভাবে মেমরি অ্যালোকেট করে এবং স্ট্যাক বাস্তবায়নে ব্যবহৃত হয়। এই প্রোগ্রামটি C++-এ লিংকড লিস্ট রিভার্স করার পদ্ধতি প্রদর্শন করে। এখানে প্রার্থী নিচের পদ্ধতি অবলম্বন করে প্রত্যাশিত ফলাফল পেতে পারেন। অ্যালগরিদমটি নিচে দেওয়া হলো:

অ্যালগরিদম

শুরু 
ধাপ ১: নোড পয়েন্টার টাইপের একটি খালি স্ট্যাক তৈরি করুন 
ধাপ ২: লিস্ট ট্রাভার্স করে এর সব নোড স্ট্যাকে পুশ করুন 
ধাপ ৩: হেড নোড থেকে লিস্ট আবার ট্রাভার্স করুন 
ধাপ ৪: স্ট্যাকের টপ থেকে মান পপ করুন 
ধাপ ৫: তাদের রিভার্স অর্ডারে কানেক্ট করুন 
ধাপ ৬: প্রিন্ট করুন 
শেষ

উপরোক্ত অ্যালগরিদমের উপর ভিত্তি করে নিচের C++ কোডটি প্রণীত হয়েছে যেখানে stdlib লাইব্রেরি ফাইল স্ট্যাক সংক্রান্ত মূল মেথডগুলো উপলব্ধ করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

উদাহরণ

#include <iostream> 
#include <stdlib.h> 
using namespace std; 

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

int stack[30], top = -1; 
struct linked_list* head = NULL; 

int printfromstack(int stack[]) { 
    cout << "\nStack after Reversal::"; 
    while (top >= 0) { 
        cout << stack[top--] << " "; 
    } 
} 

int push(struct linked_list** head, int n) { 
    struct linked_list* newnode = (struct linked_list*)malloc(sizeof(struct linked_list)); 
    newnode->data = n; 
    newnode->next = (*head); 
    (*head) = newnode; 
} 

int intostack(struct linked_list* head) { 
    cout << "Linked list::"; 
    while (head != NULL) { 
        printf("%d ", head->data); 
        stack[++top] = head->data; 
        head = head->next; 
    } 
} 

int main(int argc, char const *argv[]) { 
    push(&head, 7); 
    push(&head, 20); 
    push(&head, 3); 
    push(&head, 40); 
    intostack(head); 
    printfromstack(stack); 
    return 0; 
}

উপরের কোডে দেখা যাচ্ছে যে, স্ট্রিং অপারেশন सम्बन्धিত সমস্ত কোড retrieveChar() মেথডে বান্ডেল করা হয়েছে, যা পরবর্তীতে প্রোগ্রামের main() এক্সিকিউশনে কল করা হয়।

আউটপুট

Linked list:: 40 3 20 7 
Stack after Reversal::7 20 3 40

  1. C++ STL-এ List reverse ফাংশন

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

  3. C++-এ ট্রায়্যাঙ্গেলে মিনিমাম পাথ সম (Evaluate Reverse Polish Notation - Titre incorrect)

  4. C++-এ লিংকড লিস্টের אל্টারনেট নোড প্রিন্ট করুন (রিকার্সন ছাড়া)