Programmer
А-а-а... Тады знаем-с. 2-ая задача (развернуть я так полагаю, преобразовать из 1->2->3 в 3->2->1) тоже решается просто. Писать прогу в ломы поэтому воспльзуюсь разрешением использовать псевдокод.

Короче так. Пусть heap - голова списка, ^.info - поле, ^.next - ссылка на следующий элемент. Тогда:
- c := heap; p := nil;
- n := c^.next; c^.next := p; p := c; c := n;
- если c <> nil, то возвращаемся на пункт (2)
- heap := p;
Кажись так...