ধরুন, আমাদের এইরকম একটি এককভাবে লিঙ্ক করা তালিকা আছে −
const list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: {
value: 5,
next: {
value: 6,
next: {
value: 7,
next: null
}
}
}
}
}
}
}; আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্টের মতো একটি তালিকা এবং দ্বিতীয় আর্গুমেন্ট হিসাবে একটি সংখ্যা নেয়৷
ফাংশনের তালিকায় সেই মান সহ একটি নোড আছে কিনা তা অনুসন্ধান করা উচিত, যদি এটি থাকে তবে ফাংশনটি তালিকা থেকে নোডটি সরিয়ে দেবে।
উদাহরণ
এর জন্য কোড হবে −
const list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: {
value: 5,
next: {
value: 6,
next: {
value: 7,
next: null
}
}
}
}
}
}
};
const recursiveTransform = (list = {}) => {
if(list && list['next']){
list['value'] = list['next']['value'];
list['next'] = list['next']['next'];
return recursiveTransform(list['next']);
}else{
return true;
};
}
const removeNode = (list = {}, val, curr = list) => {
// end reached and item not found
if(!list){
return false;
}
if(list['value'] !== val){
return removeNode(list['next'], val, list);
};
return recursiveTransform(list);
};
console.log(removeNode(list, 3));
console.log(JSON.stringify(list, undefined, 4)); আউটপুট
এবং কনসোলে আউটপুট হবে −
true
{
"value": 1,
"next": {
"value": 2,
"next": {
"value": 4,
"next": {
"value": 6,
"next": {
"value": 7,
"next": null
}
}
}
}
}