Форум: "Начинающим";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];
ВнизДинамический двунаправленный список (Рандом) Найти похожие ветки
← →
Sevenfold © (2011-05-11 03:13) [0]Здраствуйте. Сразу к делу.
Типы данных для описания списка:
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;
Задача:
Нужно сделать процедурку случайной перестановки элементов списка. Рассортировать кароче :p
Выручайте. Или хоть намекните как ато щас кирпичи полезут :o
← →
Eraser © (2011-05-11 04:36) [1]randomrange + f1
← →
MBo © (2011-05-11 07:38) [2]N = длине списка
Пока N ненулевое, делать:
Встать в начало.
Перейти на Random(N) элемент.
Извлечь его и переставить в конец списка.
Уменьшить N.
← →
Dennis I. Komarov © (2011-05-11 09:29) [3]Удалено модератором
← →
icWasya © (2011-05-11 10:36) [4]Покритикую.
Вся идея списков - что при вставке/удалении/перестановке элементов меняют не поле Data, а поля PNext/PPrev.
И если это учебное задание, то Вам скорее всего поставят незачёт за вышеприведённый код.
Поэтому, прежде чем браться за сортировку - Вам нужно написать процедуры добавления/удаления/перестановк элементов.
← →
Sevenfold © (2011-05-12 08:28) [5]Удалено модератором
Примечание: Умники сюда не ходят, а прямо идут в помойку
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c