একটি লিংকড লিস্ট দেওয়া আছে, আমাদের এর প্রথম এলিমেন্ট বাদ দিয়ে নতুন লিস্টের হেড পয়েন্টার রিটার্ন করতে হবে।
ইনপুট : 1 → 2 → 3 → 4 → 5 → NULL আউটপুট : 2 → 3 → 4 → 5 → NULL ইনপুট : 2 → 4 → 6 → 8 → 33 → 67 → NULL আউটপুট : 4 → 6 → 8 → 33 → 67 → NULL
দেওয়া সমস্যায়, আমাদের লিস্টের প্রথম নোড বাদ দিয়ে হেডকে দ্বিতীয় এলিমেন্টে সরিয়ে হেড রিটার্ন করতে হবে।
সমাধানের পদ্ধতি
এই সমস্যায়, আমরা হেডকে নেক্স্ট লোকেশনে সরিয়ে প্রিভিয়াস নোড ফ্রি করতে পারি।
উদাহরণ প্রোগ্রাম
#include <iostream>
using namespace std;
/* লিংক লিস্ট নোড */
struct Node {
int data;
struct Node* next;
};
void push(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 main() {
Node* head = NULL;
push(&head, 12);
push(&head, 29);
push(&head, 11);
push(&head, 23);
push(&head, 8);
auto temp = head; // temp হেড হয়
head = head->next; // আমাদের হেড blir নেক্স্ট এলিমেন্ট
delete temp; // আমরা temp ডিলিট করি অর্থাৎ প্রথম এলিমেন্ট
for (temp = head; temp != NULL; temp = temp->next) // লিস্ট প্রিন্ট করা
cout << temp->data << " ";
return 0;
}
আউটপুট
23 11 29 12
উপরোক্ত কোডের ব্যাখ্যা
এই প্রোগ্রামে আমাদের শুধু হেডকে এর নেক্স্ট এলিমেন্টে শিফট করতে হয় এবং তারপর প্রিভিয়াস এলিমেন্ট ডিলিট করে নতুন লিস্ট প্রিন্ট করতে হয়। দেয়া প্রোগ্রামের সমগ্র টাইম কমপ্লেক্সিটি O(1) যা বোঝায় আমাদের প্রোগ্রাম দেয়া ইনপুটের ওপর ডিপেন্ড করে না, এবং এটি সেরা কমপ্লেক্সিটি যা অর্জন করা যায়।
উপসংহার
এই আর্টিকেলে, আমরা লিংকড লিস্ট থেকে ফার্স্ট নোড বাদ দেওয়ার সমস্যা সমাধান করেছি। আমরা এই সমস্যায় C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি শিখেছি। আমরা একই প্রোগ্রাম অন্যান্য ল্যাঙ্গুয়েজে লিখতে পারি như C, Java, Python এবং অন্যান্য ল্যাঙ্গুয়েজ। আশা করি আপনি এই আর্টিকেলটিকে সহায়ক খুঁজে পাবেন।