Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi_списки2_методика.DOC
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
292.86 Кб
Скачать

Структура модели списка. Модуль построения и редактирования списка

Согласно шаблону описанному в предыдущем разделе структуру двунапраленного линейного списка из трех узлов можно представить графически, как это показано на рис.13.

Рис.13. Структура двунаправленного линейного списка

Каждый из трех узлов(они пронумерованы) содержит три поля:

- указатель на предыдущий узел (поле Prev);

- указатель на последующий узел (поле Next);

- информационное поле (поле Down).

Информационное поле с именем Down описано типом данных запись (record TA).

Содержание полей этой записи представлено ниже под каждым узлом списка.

В поле Prev первого узла, как и в поле Next последнего записан адрес Nil (дословно в никуда). Зарезервированное слово nil является признаком конца списка и это действительно так, поскольку ни перед первым узлом, ни после последнего других узлов нет и указывать не на что. Запись TList содержит:

- указатель на первый узел списка (поле First);

- указатель на последний узел списка (поле Last);

- поле счетчика числа узлов в списке (поле Count).

Указатели First и Last предназначены и используются для процедуры построения и процедуры редактирования списка. Они предоставляют определенные удобства в работе со списком, поскольку по указателю First легко попасть в начало списка, а по указателю Last в его конец.

В соответствии с представленной структурой перейдем к описанию модуля Unit2.

Интерфейсная часть модуля Unit2 имеет следующий вид:

unit Unit2;

Interface

uses Classes;

type

TA=record { Автомобиль }

M: String[15]; { Ф.И.О. владельца }

N: String[10]; { Марка }

W: String[14]; { Номер }

end;

PTElem=^TElem;

TElem=record

Prev,Next : PTElem;

Down : TA;

end;

TList=record

First,Last : PTElem;

Count : Longint;

end;

Var

L : Tlist; { переменная для работы с указателями First

и Last и счетчиком Count }

Current : PTElem; { служебный указатель для

перемещения по узлам списка}

A : array[1..10] of TA; {информационный массив-буфер

описан в разделе 1.1}

ind,key1,t:integer; {ind - счетчик заполненных

элементов массива «а» или иначе

заданное число узлов будущего

списка, key1 – служебный ключ-

признак и t номер заданного узла}

procedure TList_Init; {процедура инициализации

указателей First , Last и счетчика Count}

procedure CreateList; {процедура построения списка}

procedure PrintFirst(mem:TStrings); {процедура

прямой печати списка}

procedure PrintLast (mem:TStrings); {процедура

обратно печати списка}

procedure SearchNode (mem:TStrings); {процедура

поиска узла по номеру}

procedure DisposeList; {процедура удаления списка}

procedure DeleteNode;{процедура удаления узла списка}

procedure AddAfterNode; {процедура добавления узла в

список после заданного номера}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]