Навеяно вот этим постом, про поиск неповторяющихся элементов. Приведу две задачки типа для собеседований.
Даны два списка цифр (от 0 до 9) которые представляют собой запись длинных чисел, например список 3 -> 2 -> 6 -> 7 -> 8 это число 32678. Требуется сложить два этих числа используя O(1) дополнительной памяти. По спискам мы можем перемещаться только вперед, по спискам можно проходить несколько раз.
Заметим что никакие хаки не позволяют нам двигаться по спискам в обратном направлении, по условию задачи.Дан однонаправленный список, где следующий элемент задается его адресом — переменной фиксированной длины, например 8 байтовой. Придумать хак, позволяющий двигаться по списку в обратном направлении. Использовать O(1) памяти. Более подробно опишу что представляет из себя элемент списка на конкретном примере кода
struct TListElement {
int Val;
TListElement* Next;
};
PS: Ответы прятать под спойлер (в предыдущую правку)