Алгоритмические языки и программирование. Аксенова Л.И - 35 стр.

UptoLike

35
begin
If St^.Info.Sum_ball < Ss^.Info.Sum_ball then
begin { Нужна перестановка}
if St = Beg_Spis then
begin { Перестановка в начале списка: см. рис. 6}
Beg_Spis := Ss;
St^.Ukaz := Ss^.Ukaz;
Ss^.Ukaz := St;
end
else
begin { Перестановке в произвольном месте
списка, кроме начала : см. рис. 7}
Sz := Sp^.Ukaz;
Sp^.Ukaz := St^.Ukaz;
St^.Ukaz := Ss^.Ukaz;
Ss^.Ukaz := Sz;
end;
Key := True; { Перестановка произведена }
end;
Sp := St;
St := St^.Ukaz; { Переход на следующий элемент списка}
If St = Nil then Ss := Nil
else Ss := St^.Ukaz; { Изменение значения
следующего указателя}
end; { Продолжение цикла по просмотру списка }
Until Key = False; { Перестановок больше
не будет}
End; { Конец процедуры сортировки}
Обмен St и Ss в начале списка
3. Ss^.Ukaz := St;
St Ss
Info Info Info Info
            begin
            If St^.Info.Sum_ball < Ss^.Info.Sum_ball then
               begin { Нужна перестановка}
                  if St = Beg_Spis then
                      begin { Перестановка в начале списка: см. рис. 6}
                                     Beg_Spis := Ss;
                                     St^.Ukaz := Ss^.Ukaz;
                                     Ss^.Ukaz := St;
                     end
                         else
                   begin { Перестановке в произвольном месте
                              списка, кроме начала : см. рис. 7}
                                     Sz := Sp^.Ukaz;
                                     Sp^.Ukaz := St^.Ukaz;
                                     St^.Ukaz := Ss^.Ukaz;
                                     Ss^.Ukaz := Sz;
                    end;
                 Key := True; { Перестановка произведена }
            end;
Sp := St;
St := St^.Ukaz; { Переход на следующий элемент списка}
             If St = Nil then Ss := Nil
                          else Ss := St^.Ukaz; { Изменение значения
                                                следующего указателя}
       end; { Продолжение цикла по просмотру списка }
Until Key = False; { Перестановок больше не будет}
End; { Конец процедуры сортировки}

                              Обмен St и Ss в начале списка

                  3. Ss^.Ukaz := St;
            St           Ss

        Info           Info            Info          Info


                                35