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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2012, 01:09   #1
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию дерево ну или список "вставка"

помогите плизз со вставкой элемента

Код:
FUNCTION ADD(d: tree; k: tree; s:string): tree; 
var p1, pp: tree;
begin
   pp:=k; // корень или начальный элемент
   while pp<>nil do 
   begin
      if pp=d then // d элемент после которого вставляется элемент с S значением
      begin            
            if pp^.next=nil then 
               begin 
                
                  //если элемент последний, то как быть???
                  
               end
            else
              begin // эта вставка, элемент d находится не вначале и не в конеце
                  new(p1);
                  p1^.next:=pp^.next;  
                  p1^.sss:=s; 
                  pp^.next:=p1;
            end;
         break;
      end;
   pp:=pp^.next;
   end;
   pp:=k;
   ADD:=pp;
end;

Последний раз редактировалось Madmaxisss; 27.08.2012 в 01:24.
Madmaxisss вне форума Ответить с цитированием
Старый 27.08.2012, 10:42   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Судя по структуре у вас односвязный список, тогда добавить в него элемент можно так:
Код:
Procedure ADD(var lst:TList; value:string);
Var
  tmp:TList;
Begin
  if lst = nil then
  Begin
    new(lst);
    tmp:=lst
  End
  else
  Begin
    tmp:=lst;
    while tmp^.Next <> nil do
      tmp:=tmp^.Next;
    new(tmp^.Next);
    tmp:=tmp^.Next;
  End;
  tmp^.Next:=Nil;
  tmp^.Val:=value
End;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 27.08.2012, 11:16   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
...
      if pp=d then // d элемент после которого вставляется элемент с S значением
      begin            
            {if pp^.next=nil then 
               begin 
                
                  //если элемент последний, то как быть???
                  
               end
            else}
              begin // эта вставка, элемент d находится не вначале и не в конеце и конеце тоже
                  new(p1);
                  p1^.next:=pp^.next;  
                  p1^.sss:=s; 
                  pp^.next:=p1;
            end;
         break;
      end;
...

Последний раз редактировалось eoln; 27.08.2012 в 11:18.
eoln вне форума Ответить с цитированием
Старый 01.09.2012, 10:32   #4
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

sorry что долго не отвечал((( да, eoln как всегда прав - твой вариант работает))) спасибо и GetMax ))) eoln и GetMax по +
Madmaxisss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Vista и Apache на одном компьютере" или "кто сумел совместить" ? vedro-compota Операционные системы общие вопросы 20 30.01.2011 21:15
Напечатать текст, удалив из него все цифры и знаки "+" или "–". Язык С++. KaylasMKTY Помощь студентам 8 07.03.2010 21:35
PHP(или другой язык): Получить все пары "имя" -> "значение" переданные методом POST KingOfNothing PHP 4 12.04.2009 14:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51