Помощь - Поиск - Пользователи - Календарь
Полная версия: ДВУСВЯЗНЫЕ СПИСКИ: переместить элемент
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Владик
Помогите решить задачку!
Дан двусвязный список и указатель Р0 на один из его элементов,
переместить P0 на К(>0) позиций назад(т.е. через К элементов).
Если К больше числа элементов списка, стоящих перед Р0 то переместить в начало дв. списка. Операции выделения, освобождения памяти не использовать.
volvo
...
k := 20;
move_to := p;

while (move_to <> nil) and (k > 0) do begin
move_to := move_to^.prev; dec(k);
end;

if p^.prev <> nil then p^.prev^.next := p^.next;
if p^.next <> nil then p^.next^.prev := p^.prev;

if move_to = nil then begin
move_to := first; first := p
end;
if move_to^.prev <> nil then
move_to^.prev^.next := p;
p^.prev := move_to^.prev;

if move_to^.next <> nil then
move_to^.next^.prev := p;
p^.next := move_to;
...
Гость
спасибо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.