আমাদেরকে এককভাবে লিঙ্ক করা তালিকা দেওয়া হয়েছে এবং সেই তালিকা থেকে শেষ নোডটি সরিয়ে দেওয়ার দায়িত্ব দেওয়া হয়েছে। এই সমস্যায়, আমরা কেবল প্রদত্ত তালিকার মধ্য দিয়ে যেতে যাচ্ছি এবং কেবলমাত্র শেষ নোডটি সরিয়ে ফেলব।
সমাধান খোঁজার পদ্ধতি
এই পদ্ধতিতে, আমরা প্রদত্ত তালিকার মধ্য দিয়ে যাই এবং আমরা পূর্ববর্তী নোড এবং বর্তমান নোডের উপর নজর রাখি। এখন যখন আমাদের বর্তমান নোড শেষ নোডে পরিণত হয়, তখন আমরা আগের পরিবর্তন করি -> NULL এর পাশে এবং বর্তমান নোডটি মুছে ফেলি।
উদাহরণ
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node* next;
};
void push(struct Node** ref, int new_data) { // pushing the node
struct Node* new_n = new Node;
new_n->data = new_data;
new_n->next = (*ref);
(*ref) = new_n;
}
int main() {
Node* head = NULL;
push(&head, 12);
push(&head, 29);
push(&head, 11);
push(&head, 23);
push(&head, 8);
auto curr = head, prev = head;
if (!curr || !curr -> next) // if list only has one element or the list is empty
cout << "Empty\n";
else {
while (curr) { // while curr != NULL
if (!curr -> next) {
prev -> next = NULL;
delete(curr); // freeing the space
break;
}
prev = curr;
curr = curr -> next; // moving to the next node
}
}
for (Node* temp = head; temp != NULL; temp = temp->next) // printing the data
cout << temp->data << " ";
return 0;
} আউটপুট
8 23 11 29
উপরের কোডের ব্যাখ্যা
এই পদ্ধতিতে, আমরা বর্তমান নোড এবং পূর্ববর্তী নোডের ট্র্যাক রেখে অ্যারের মাধ্যমে অতিক্রম করি। এখন যখন আমাদের বর্তমান নোড শেষ নোডে পরিণত হয়, তখন আমরা আগের -> NULL এর পাশে পরিবর্তন করি এবং বর্তমান নোডটি মুছে ফেলি। প্রদত্ত প্রোগ্রামের সামগ্রিক সময়ের জটিলতা হল O(N), যেখানে N হল আমাদের প্রদত্ত তালিকার আকার।
সময়ের জটিলতা - O(N)
N:আমাদের অ্যারের আকার
উপসংহার
এই নিবন্ধে, আমরা প্রদত্ত লিঙ্ক তালিকা থেকে শেষ নোডটি সরানোর জন্য একটি সমস্যার সমাধান করি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং আমরা যে সম্পূর্ণ পদ্ধতির সমাধান করেছি তাও শিখেছি। আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আমরা আশা করি আপনার এই নিবন্ধটি সহায়ক হবে৷