Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Очистить список






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;

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал