На языке паскаль написать прогу, которая организовывает переворот списка при помощи динамической памяти.
Кто поможет, того благословят Боги.
Кто поможет, того благословят Боги.
Блин да возьми ты два указателя, один чтоб указывал на последний элемент списка, а второй на первый. Алгоритм такой: [ЖО] взял в память первый и последний элемент списка, положил последний по адресу, куда указывает первый указатель, и первый по последнему. Всё, элементы поменяны местами. Дальше сдвигаешь оба указателя на один элемент списка друг к другу - последний в верх по списку, а первый вниз и возвращаешься к пункту [ЖО] . Учись, не ленись, программирование - занятная штука, а главное мозги всегда в тонусе и любые другие науки легче даваться будут.
На языке паскаль готовой сущности "список", насколько я помню, нет. Но его можно организовать при помощи примерно такой конструкции:
TYPE
pmyListItem = ^myListItem;
myListItem = record
Value :Integer;
Prev :pmyListItem;
Next :pmyListItem;
end;
Тогда процедура переворота списка может выглядеть примерно так:
PROCEDURE cheGuevara(src :pmyListItem; var dst :pmyListItem)
VAR nextDst :pmyListItem;
BEGIN
WHILE (src <> nil) DO
BEGIN
New(dst);
dst^.Value := src^.Value;
dst^.Next := nextDst;
IF (nextDst <> nil) THEN nextDst^.Prev := dst;
nextDst := dst;
src := src^.Next;
END;
END;