এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি প্রদত্ত লিঙ্কযুক্ত তালিকায় শীর্ষ উপাদান খুঁজে পায়।
পিক এলিমেন্ট হল এমন একটি উপাদান যা আশেপাশের উপাদানের চেয়ে বড়। আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷
৷-
লিঙ্ক করা তালিকার জন্য একটি স্ট্রাকট নোড তৈরি করুন।
-
ডামি ডেটা দিয়ে লিঙ্ক করা তালিকা তৈরি করুন।
-
বেস কেস পরীক্ষা করুন যেমন লিঙ্ক করা তালিকা খালি নাকি দৈর্ঘ্য 1।
-
পূর্ববর্তী নামক একটি ভেরিয়েবলে প্রথম উপাদান সংরক্ষণ করুন।
-
লিঙ্ক করা তালিকার উপর পুনরাবৃত্তি করুন।
-
বর্তমান উপাদানটি পূর্ববর্তী উপাদান এবং পরবর্তী উপাদানের চেয়ে বড় কিনা তা পরীক্ষা করুন৷
-
উপরের শর্ত পূরণ হলে ফিরে যান।
-
পূর্ববর্তী উপাদান আপডেট করুন।
-
-
ফলাফল প্রিন্ট করুন
উদাহরণ
আসুন কোডটি দেখি।
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
struct Node* next;
};
void insertNewNode(struct Node** head_ref, int new_data) {
struct Node* new_node = new Node;
new_node->data = new_data;
new_node->next = (*head_ref);
*head_ref = new_node;
}
int findPeakElement(struct Node* head) {
if (head == NULL) {
return -1;
}
if (head->next == NULL) {
return head->data;
}
int prev = head->data;
Node *current_node;
for (current_node = head->next; current_node->next != NULL; current_node = current_node->next) {
if (current_node->data > current_node->next->data && current_node->data > prev) {
return current_node->data;
}
prev = current_node->data;
}
if (current_node->data > prev) {
return current_node->data;
}
return -1;
}
int main() {
struct Node* head = NULL;
insertNewNode(&head, 7);
insertNewNode(&head, 4);
insertNewNode(&head, 5);
insertNewNode(&head, 2);
insertNewNode(&head, 3);
cout << findPeakElement(head) << endl;
return 0;
} আউটপুট
আপনি যদি উপরের কোডটি কার্যকর করেন, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।
5
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।