Помощь - Поиск - Пользователи - Календарь
Полная версия: ДВУСВЯЗНЫЕ СПИСКИ: переместить элемент
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.