Giả sử, chúng ta có một danh sách được liên kết đơn lẻ như thế này -
const list = { value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: { value: 5, next: { value: 6, next: { value: 7, next: null } } } } } } };
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một danh sách như đối số đầu tiên và một số làm đối số thứ hai.
Hàm sẽ tìm kiếm xem có tồn tại một nút với giá trị đó trong danh sách hay không, nếu có, hàm sẽ xóa nút đó khỏi danh sách.
Ví dụ
Mã cho điều này sẽ là -
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
true { "value": 1, "next": { "value": 2, "next": { "value": 4, "next": { "value": 6, "next": { "value": 7, "next": null } } } } }