Показать сообщение отдельно
  #1  
Старый 11.05.2011, 03:09
Sevenfold Sevenfold вне форума
Прохожий
 
Регистрация: 06.05.2010
Сообщения: 9
Репутация: 10
Счастье Динамический двунаправленный список (Рандом)

Здраствуйте. Сразу к делу.

Типы данных для описания списка:
Код:
  TData = Integer;
  (* Тип, описывающий элемент списка. *)
  TPElem = ^TElem;
 
  TElem = record
    Data: TData;
    PNext: TPElem;
    PPrev: TPElem;
  end;
 
  (* Тип, описывающий список. *)
  TList = record
    PFirst: TPElem;
    PLast: TPElem;
  end;

Процедура пузырчатой сортировки:

Код:
procedure SortBubbleDesc(const aList: TList);
var
  P1, P2, P: TPElem;
  Data: TData;
  F: Boolean;
begin
  if aList.PFirst = aList.PLast then
    Exit;
 
  P := aList.PLast;
  repeat
    F := False;
 
    P2 := aList.PFirst;
    repeat
      P1 := P2;
      P2 := P1^.PNext;
      if P1^.Data < P2^.Data then
      begin
        Data := P1^.Data;
        P1^.Data := P2^.Data;
        P2.Data := Data;
        F := True;
      end;
    until P2 = P;
 
    P := P^.PPrev;
  until not F;
end;

Задача:

Нужно сделать процедурку случайной перестановки элементов списка. Рассортировать кароче
Выручайте. Или хоть намекните как ато щас кирпичи полезут
Ответить с цитированием