Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Очистить список
procedure FreeList(var ListN, ListK: PElem); var Elem: PElem; begin Elem: =ListN; while Elem< > nil do begin ListN: =ListN^.next; Dispose(Elem); Elem: =ListN; end; ListK: =nil; end;
end.
И модуль с глобальными переменными. Для гарантированной инициализации и освобождения памяти воспользуемся дополнительными разделами модуля, выполняемыми при подключении и отключении модуля. unit Unit3;
Interface
uses Unit2; // описание типа и процедуры var NachaloSpiska, KonecSpiska: PElem; // начало и конец списка
Implementation // пусто
Initialization NachaloSpiska: =nil; // инициализация переменных KonecSpiska: =nil; Finalization FreeList(NachaloSpiska, KonecSpiska); // освобождение памяти End. Для решения задачи создадим форму вида:
unit Unit1;
Interface
uses < список подключенных модулей >
type TForm1 = class(TForm) < описание класса > end;
var Form1: TForm1;
Implementation {$R *.dfm}
uses Unit2, Unit3; // подключаем модули с типами и процедурами, а затем и с переменными
Добавить элемент со значением R в соответствии с заданным порядком в список Procedure Dobavit(var ListN, ListK: PElem; r: real); // адреса начала и конца списка и R var ListC: PElem; // текущий элемент списка begin if ListN = nil then CreateList(ListN, ListK, r) // если список пуст else if abs(r) > = abs(ListN^.info) then AddFirst(ListN, ListK, r) // добавить в начало else if abs(r) < = abs(ListK^.info) then AddLast(ListN, ListK, r) // добавить в конец else begin // найти после какого ListC: =ListN; // с начала списка while abs(ListC^.next^.info) > = abs(r) do ListC: = ListC^.next; AddMedium(ListN, ListC, ListK, r) // добавить после текущего end; end;
|