এই সমস্যায়, আমরা একটি দ্বিগুণ লিঙ্ক তালিকা দেওয়া হয়. আমাদের কাজ হল একটি C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকার আকার খোঁজার জন্য একটি প্রোগ্রাম তৈরি করা।
Doubly Linked List হল একটি বিশেষ ধরনের Linked List যেখানে একক লিঙ্কড লিস্টের তুলনায় সহজে সামনের দিকে বা পিছনের দিকে উভয় উপায়েই নেভিগেশন সম্ভব। দ্বিগুণ লিঙ্কযুক্ত তালিকার ধারণা বোঝার জন্য নিম্নলিখিত গুরুত্বপূর্ণ পদগুলি রয়েছে৷
-
লিঙ্ক - একটি লিঙ্ক করা তালিকার প্রতিটি লিঙ্ক একটি উপাদান নামে একটি ডেটা সংরক্ষণ করতে পারে৷
৷ -
পরবর্তী - একটি লিঙ্ক করা তালিকার প্রতিটি লিঙ্কে পরবর্তী লিঙ্কের একটি লিঙ্ক থাকে যা নেক্সট বলে।
-
পূর্ববর্তী - একটি লিঙ্ক করা তালিকার প্রতিটি লিঙ্কে পূর্ববর্তী লিঙ্কের একটি লিঙ্ক রয়েছে যাকে বলা হয়।
-
লিংকডলিস্ট − একটি লিঙ্কড লিস্টে ফার্স্ট বলা প্রথম লিঙ্কের কানেকশনলিঙ্ক থাকে এবং লাস্ট কল করা শেষ লিঙ্কের লিঙ্ক থাকে।
একটি দ্বিগুণ লিঙ্কযুক্ত তালিকার প্রতিনিধিত্ব -
সমস্যা বর্ণনা - আমাদের উপরোক্ত প্রকারের একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা দেওয়া হবে। এবং আমরা এর আকার (দৈর্ঘ্য) খুঁজে পাব।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
the above linked list A <-> B <-> C.
আউটপুট
3
সমাধান পদ্ধতি
দ্বিগুণ লিঙ্কযুক্ত তালিকার আকার খুঁজে পেতে, আমাদের দ্বিগুণ লিঙ্কযুক্ত তালিকাটি অতিক্রম করতে হবে এবং দৈর্ঘ্যের মূল্যবান দৈর্ঘ্য সহ ট্র্যাক রাখতে হবে।
অ্যালগরিদম
শুরু করুন − দৈর্ঘ্য =0, *temp =head
- ধাপ 1 − তালিকাটি অতিক্রম করুন অর্থাৎ টেম্প পর্যন্ত করুন!=NULL.
- ধাপ ১.১ − দৈর্ঘ্য বাড়ান, দৈর্ঘ্য++
- ধাপ ১.২ − আপডেট পয়েন্টার, temp =temp -> পরবর্তী।
- ধাপ 2 - মুদ্রণের দৈর্ঘ্য।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম
উদাহরণ
#include <iostream> using namespace std; struct doublyLL { char val; struct doublyLL *next; struct doublyLL *prev; }; void insertNode(struct doublyLL** head_ref, int value){ struct doublyLL* new_node = new doublyLL; new_node->val = value; new_node->next = (*head_ref); new_node->prev = NULL; if ((*head_ref) != NULL) (*head_ref)->prev = new_node ; (*head_ref) = new_node; } int calcDLLSize(struct doublyLL *temp) { int length = 0; while (temp != NULL){ temp = temp->next; length++; } return length; } int main(){ struct doublyLL* head = NULL; insertNode(&head, 'A'); insertNode(&head, 'H'); insertNode(&head, 'E'); insertNode(&head, 'K'); insertNode(&head, 'M'); insertNode(&head, 'S'); cout<<"The size of Doubly Linked List is "<<calcDLLSize(head); return 0; }
আউটপুট
The size of Doubly Linked List is 6