লিংকড লিস্ট ডাইনামিকভাবে মেমরি অ্যালোকেট করে এবং স্ট্যাক বাস্তবায়নে ব্যবহৃত হয়। এই প্রোগ্রামটি 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