Задание симферопольского Яндекса (20.10.2012)
Пропарсить "односвязный список в обратном порядке".
Самому было тяжело въехать, почему же оно так работает, но все же mission complete :).

function reversePrint (linkedList) {
  if (linkedList.next) reversePrint(linkedList.next);
  console.log(linkedList.value);
}

var someList = {
    value: 1,
    next: {
        value: 2,
        next: {
            value: 3,
            next: {
                value: 4,
                next: null
            }
        }
    }
};
reversePrint(someList); //4 3 2 1

Небольшой апдейт - раз имеется next, то хочется иметь и prev со ссылкой на родителя. Легким движением руки модифицируем функцию.

function reversePrint (linkedList) {
  if (linkedList.next) {
    linkedList.next.prev = linkedList;
    reversePrint(linkedList.next);
  }
  if (!linkedList.prev) console.log(linkedList);
}

Выдаст в консоль она самый старший элемент (у которого нет родителя) а в дереве появятся обратные ссылки.
Линк на задачу
JavaScript
comments powered by Disqus
JavaScript (13)
PHP (11)
Brainfuck (8)
adm (8)
Joomla (4)
Canvas (3)
answers (2)
API (2)
CMS (2)
Modx (2)
jQuery (1)
Ajax (1)
SQL (1)
Shell (1)
batch (1)
10-6