Передача указателя узла односвязного списка через функцию в javascript

deleteNodeNoPointer(node) {
   node.val = node.next.val;
   node.next = node.next.next;
   return node;
}

Как передать указатель узла односвязного списка в эту функцию

например, если first является объектом этого класса, и у нас есть связанный список

1-> 2-> 3-> 4-> 5-> null; и мы должны отправить указатель числа 3 на функцию выше ..

first.deleteNodeNoPointer(---POINTER--OF--NODE 3--IN--SINGLYLINKEDLIST);
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
171
1

Ответы 1

Используемая у вас функция требует, чтобы вы передали ссылку на узел для удаления. Таким образом, вы должны начать с заголовка списка и пройти по списку, получая каждый узел к следующему узлу, пока не дойдете до того, который хотите удалить. Вы, вероятно, будете делать это в цикле, пока не найдете узел, который обычно удовлетворяет какому-либо условию. Но если вы произвольно захотите удалить третий узел, это будет head.next.next;

class ListItem{
  constructor(val, next = null){
    this.val = val;
    this.next = next;
  }
}

/* work to make the list */
let head = new ListItem(1);
let cur = head;
for(let i = 2; i < 10; i++){
  cur.next = new ListItem(i);
  cur = cur.next;
}
/* prints the list for demo */
function printList(node){
  while(node != null){
    console.info(node.val);
    node = node.next;
  }
}

function deleteNodeNoPointer(node) {
   node.val = node.next.val;
   node.next = node.next.next;
   return node;
}

console.info('before deletion');
printList(head);//list is setup

let thirdNode = head.next.next;//get the third node
deleteNodeNoPointer(thirdNode);//remove the third node

console.info('after deletion');
printList(head);

Обратите внимание, что если у вас действительно есть голова, удаление узла из списка может быть лучше достигнуто путем присвоения значения next родительского элемента удаленного узла, значения, хранящегося в next удаленного узла;

nodeBefore.next = nodeBefore.next.next;

Поскольку функция deleteNodeNoPointer является своего рода взломом этого подхода, предполагается, что у вас нет доступа к родительскому узлу. В любом случае вам нужна переменная, которая содержит ссылку на узел для удаления, а затем передает ее в функцию.

Таким образом, я могу получить указатель, используя this.head.next.next в javascript ... Я действительно хотел сделать это geeksforgeeks.org/…

Bikash Gurung 12.10.2018 18:01

Другие вопросы по теме