Помогите решить задачку! Дан двусвязный список и указатель Р0 на один из его элементов, переместить P0 на К(>0) позиций назад(т.е. через К элементов). Если К больше числа элементов списка, стоящих перед Р0 то переместить в начало дв. списка. Операции выделения, освобождения памяти не использовать.
volvo
23.12.2005 15:34
...
k := 20;
move_to := p;
while (move_to <> nil) and (k > 0) dobegin
move_to := move_to^.prev; dec(k);
end;
if p^.prev <> nilthen p^.prev^.next := p^.next;
if p^.next <> nilthen p^.next^.prev := p^.prev;
if move_to = nilthenbegin
move_to := first; first := p
end;
if move_to^.prev <> nilthen
move_to^.prev^.next := p;
p^.prev := move_to^.prev;
if move_to^.next <> nilthen
move_to^.next^.prev := p;
p^.next := move_to;
...
Гость
24.12.2005 12:36
спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.