Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2008, 19:42
new_sergei new_sergei вне форума
Прохожий
 
Регистрация: 18.12.2008
Сообщения: 1
Репутация: 10
По умолчанию задача на динамические списки

Здравствуйте.

Есть корректно построенный динамический однонаправленный список. В списке содержатся записи такого типа
Код:
  SamoletPtr = ^Samolet;  { ukazatel na tip dannyh samolet }

  Samolet = Record { tip dannych samolet }
    Tip: String;
    God: String;
    Rashod: Real;
    SledSamolet: SamoletPtr;
  end; 

Необходимо провести сортитовку этих указателей по алфавиту по полю Tip.

Я пробовал это сделать обычным пузырьком. Если бы это был обычный массив, то проблем бы никаких не было бы. А вот как это сделать через указатели?

Я делал так

Sam1 - указатель на заглавный элемент списка.
SamTek - указатель на текущий элемент списка.
Код:
Procedure SortirovatSamolety;
var

Vspom: SamoletPtr;
SamBol, SamMal: SamoletPtr;
SamBolName, SamMalName:String;

begin

   SamBol := Sam1;

   if SamBol^.SledSamolet <> Nil then
   begin

      SamBol := SamBol^.SledSamolet;

      {if  SamBol^.SledSamolet <> Nil then begin end esli v spiske kak minimum 1 element}

      {if SamBol^.SledSamolet^.SledSamolet <> Nil then begin end esli v spiske kak minimum 2 elementa}

      while SamBol^.SledSamolet^.SledSamolet <> Nil do    {vneshn. cykl ot 1-go do predposlednego elementa}
      begin

       SamBolName := SamBol^.Tip;

       SamMal := SamBol^.SledSamolet;

         while SamMal^.SledSamolet <> Nil do {vnutr. cykl ot 2-go do poslednego elementa}
         begin

               SamMalName := SamMal^.Tip;

               if SamBol^.Tip > SamMal^.Tip then
               begin

                  New(Vspom);
                  Vspom := SamMal;
                  SamMal := SamBol;
                  SamBol := Vspom;

                  Dispose(Vspom);

                end;

              SamMal := SamMal^.SledSamolet;

          end;

        SamBol := SamBol^.SledSamolet;

      end;

   end
   else
   begin
     WriteLn('Sortirovka nevozmozhna: net samoletov');
   end;

  while SamTek^.SledSamolet <> Nil do
  begin
     
  end;
end;
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 18.12.2008 в 19:51.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:00.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025