৬-৭ঃ Error Handling
এই মডিউলে আমারা দেখবো কীভাবে কোনো একটি Invalid ইনপুটের জন্য আমাদের কোড যাতে Crash না করে ঐ পদক্ষেপ গুলা নেয়া যায়। Error 1 : Insert At Any Position এ এমন একটি পজিশন এ Node এড করতে চাওয়া যেখানে Node insert করা যাবে না। যেমনঃ 3 সাইজের একটি Linked list এর ১০ তম পজিশনে Node Insert করা। এই ক্ষেত্রে segmentation fault হয়ে আমাদের crash হয়ে যায়।
Handling : এই ক্ষেত্রে আমরা যদি দেখি Temp shift হতে হতে এক সময় Null এ চলে গেছে অর্থাৎ Invalid index এ চলে যায় , আমরা ঐখানে লুপ থামিয়ে দিয়ে Invalid index বলে দিবো।
void insert_at_position(Node *&head, int index, int value)
{
Node *newNode = new Node(value); // নতুন Node বানিয়ে নিলাম
Node *temp = head; // temp পয়েন্টার এ head রেখে দিলাম
for (int i = 1; i <= index - 1; i++)
{
temp = temp->next;
if(temp==NULL){
cout << "Invalid Index" << endl ;
return ; // এখানে ফাংশন থামিয়ে দিবো , কারণ এই Invalid index নিয়ে কোনো কাজ করা যাবে না
}
}
newNode->next = temp->next;
temp->next = newNode;
}
Error 2 : Delete At Any Position এ এমন একটি পজিশন এ Node Delete করতে চাওয়া যেখানে কোনো Node ই নেই। যেমনঃ 3 সাইজের একটি Linked list এর ১০ তম পজিশনে Node delete করা। এই ক্ষেত্রে segmentation fault হয়ে আমাদের crash হয়ে যায়। ঠিক আগের প্রবলেমের মতো। তা ছাড়া ও আমরা লুপ শেষ হয়ে যদি শেষ Index এ চলে আসি , এবং এই Node এর সাথে Next index কানেক্ট করতে চাই , তবে সেখানে কোনো Node থাকবে না , কারণ আমি already শেষ Node এই আছি। এটিও segmentation fault আসবে।
Handling : আগের মতো এই ক্ষেত্রে আমরা যদি দেখি Temp shift হতে হতে এক সময় Null এ চলে গেছে অর্থাৎ Invalid index এ চলে যায় , আমরা ঐখানে লুপ থামিয়ে দিয়ে Invalid index বলে দিবো। দ্বিতীয় ইরর এর জন্য আমরা চেক করে দেখবো temp node এর next এর next এ NULL আছে কিনা। NULL থাকলে এটি Invalid index.
void delete_at_position(Node *&head, int position)
{
Node *temp = head;
for (int i = 1; i <= position - 1; i++)
{
temp = temp->next;
if(temp==NULL){
cout << "Invalid Index" << endl ;
return ; // এখানে ফাংশন থামিয়ে দিবো , কারণ এই Invalid index নিয়ে কোনো কাজ করা যাবে না
}
}
if(temp->next==NULL){ // দ্বিতীয় error টি handle করা হচ্ছে।
cout << "Invalid Index" << endl ;
return ; // এখানে ফাংশন থামিয়ে দিবো , কারণ এই Invalid index নিয়ে কোনো কাজ করা যাবে না
}
Node* delete_node = temp->next;
temp->next = temp->next->next;
delete delete_node;
}
Error 3: Delete head এর ক্ষেত্রে LInkded List যদি খালি হয়ে থাকে , তবে সেই ক্ষেত্রে head delete করলে segmentation fault হবে।
Handling : এই ক্ষেত্রে আমরা যদি দেখি head নেই /Null. অর্থাৎ লিঙ্কড লিস্ট খালি , তবে সেইক্ষেত্রে Invalid Index প্রিন্ট করে ফাংশন অফ করে দিবো।
void delete_head(Node *&head){
if(head == NULL) { // লিঙ্কড লিস্ট খালি
cout << "Linked List is empty" << endl ;
return ;
}
Node* delete_node = head; // Delete_node এ head কে স্টোর করে রাখলাম
head = head->next; //head এ head->next স্টোর করে রাখি
delete delete_node; // delete_node কে delete করে দিলাম
}
Last updated