Advertisement
vit134

Удалить дубли в списке (Яндекс)

Nov 9th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Удалить дубли из несортированного связного списка
  3. */
  4.  
  5. /**
  6.  * Удаляет дубликаты из связаного списка.
  7.  * Не использует дополнительную память.
  8.  * Функция принимает на вход указатель на начало списка.
  9.  *
  10.  * @param   {Node} head
  11.  * @returns {Node}
  12.  */
  13. function removeNode(head) {
  14.   // Предполагается, что head объект вида { data: <*>, next: <Node> }
  15.   let current = head;
  16.  
  17.   while (current !== null) {
  18.     let runner = current;
  19.    
  20.     while (runner.next !== null) {
  21.       if (runner.next.data === current.data) {
  22.         runner.next = runner.next.next;
  23.       } else {
  24.         runner = runner.next;
  25.       }
  26.     }
  27.     current = current.next;
  28.   }
  29.   return head;
  30. }
  31.  
  32.  
  33. let tree = {
  34.     data: 1,
  35.     next: {
  36.         data: 2,
  37.         next: {
  38.             data: 1,
  39.             next: {
  40.                 data: 4,
  41.                 next: null
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. console.log(removeNode(tree))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement