Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2010, 11:26   #1
redmonkey
 
Регистрация: 07.08.2009
Сообщений: 4
По умолчанию Двухсвязный список, добавление элемента в указанную позицию

Здравствуйте помогите пожалуйста дописать процедуру, сам разобраться никак не могу, нужно написать процедуру которая бы добавляла в двухсвязный список элемент в указанную позицию.

Код:
procedure AddElemPos(var z:list; pos,y:integer);
var p,q:List;
    i:integer;
begin
  if pos<1 then
    exit;
  if z=nil then
  begin
    write('Список пуст!');
    exit;
  end;
  i:=1;
  New(q);
  p:=z;
  while (p<>nil) and
  while y>p^.next^.data do
    p:=p^.next;
    q^.next:=p^.next;
    q^.data:=y;
    p^.next:=q;
end;
никак не пойму, данная процедура вставляет элемент после первого элемента, надо как-то дописать чтоб вставляла после элемента с номером pos, помогите плиз.
redmonkey вне форума Ответить с цитированием
Старый 19.10.2010, 11:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тут уже обсуждалось такое. вот хотя бы здесь:http://www.programmersforum.ru/showthread.php?t=87357
Пройдись поиском и посмотри как народ решает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2010, 12:14   #3
redmonkey
 
Регистрация: 07.08.2009
Сообщений: 4
По умолчанию

все дописал сам, вопрос отпал вот мало ли кому понадобится, пойду сдавать завтра
Код:
procedure AddElemPos(var z:list; pos,y:integer);
var p,q:List;
    i:integer;
begin
  if pos<1 then
    exit;
  if z=nil then
  begin
    write('Список пуст!');
    exit;
  end;
  i:=1;
  New(q);
  p:=z;
  while (p<>nil) and (i<>pos) do
  begin
    p:=p^.next;
    inc(i);
  end;
  if i=pos then
   begin
    q^.next:=p^.next;
    q^.data:=y;
    p^.next:=q;
end;
redmonkey вне форума Ответить с цитированием
Старый 19.10.2010, 12:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
пойду сдавать завтра
Удачного отмечания после сдачи )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как удалить двухсвязный список Saken_ Общие вопросы Delphi 0 11.10.2010 11:02
паскаль. Указать позицию последнего экстремального элемента (т.е. минимального или максимального) vykker Помощь студентам 4 23.05.2010 18:25
Двухсвязный список StarScream2008 Общие вопросы C/C++ 1 19.09.2008 20:04
Паскаль... Двухсвязный список !!! merax Паскаль, Turbo Pascal, PascalABC.NET 5 21.12.2007 08:01