Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi_02_04 [2012].doc
Скачиваний:
2
Добавлен:
24.08.2019
Размер:
147.97 Кб
Скачать

Задание

Требуется составить программу типа ConsoleApplication обработки двунаправленного связанного списка, удовлетворяющая следующим требованиям:

  1. Программа «должна иметь» модульную структуру: основная программа + три модуля. Первый модуль (например, UStudent) содержит структуры и «методы» работы с записями типа TStudent. Второй модуль (например, UNode) содержит структуры и «методы» работы с записями типа TNode. Третий модуль (например, UList) содержит структуры и «методы» работы с записями типа TList.

  2. Работа программы «должна управляться» с помощью меню.

  3. Список «должен выполнять» не менее семи функций.

  4. Функции сохранения списка в файле и восстановления списка из файла являются обязательными.

Варианты структур данных, находящихся на «нижнем» уровне списка, взять из лабораторной работы № 11 (или лабораторной работы № 13) первого семестра. В рассмотренных выше примерах нижний уровень списка соответствует объявлению типа TSudent.

Приложения

Прототип модуля UStudent

unit UStudent;

interface

type TStudentPtr = ^TStudent; // Это указатель на студента

TStudent = record // Это студент

Name: string[20];

Age: Byte;

Group: string[12];

end;

procedure ReadIn(p: TStudentPtr);// Прочитать студента с консоли

procedure PrintOn(p: TStudentPtr);// Напечатать студента на консоли

implementation

end.

Прототип модуля UNode

unit UNode;

interface

uses UStudent;

type TNodePtr = ^TNode; // Это указатель на узел списка

TNode = record // Это узел двунаправленного списка

Down: TStudentPtr;

Next: TNodePtr;

Prev: TNodePtr;

end;

procedure Init(prev, next, curr: TNodePtr; down: TStudentPtr);// Инициализировать узел

procedure Done(p: TNodePtr);// Разрушить узел

implementation

end.

Прототип модуля UList

unit UList;

interface

uses UStudent, UNode;

type TListPtr = ^TList; // Это указатель на заголовок списка

TList = record // Это заголовок списка

First: TNodePtr;

Last: TNodePtr;

Count: Integer;

end;

procedure Create(var p: TListPtr);// Создает пустой список

procedure AddFirst(p: TListPtr; d: TStudentPtr);// Добавляет новый узел в начало списка

procedure AddLast(p: TListPtr; d: TStudentPtr);// Добавляет новый узел в конец списка

procedure RemoveFirst(p: TListPtr);// Удаляет узел в начале списка

procedure RemoveLast(p: TListPtr);// Удаляет узел в конце списка

procedure FindFirst(p: TListPtr);// Находит первый узел, содержащий значение по умолчанию.

procedure FindLast(p: TListPtr);// Находит последний узел, содержащий значение по умолчанию.

procedure Print(p: TListPtr);// Распечатывает список на консоли

procedure Build(p: TListPtr);// Строит список из произвольного числа узлов

procedure Clear(p: TListPtr);// Удаляет все узлы из списка

procedure Insert(p: TListPtr; n: Integer);// Добавляет узел в список в позиции с указанным индексом.

procedure RemoveAt(p: TListPtr; n: Integer);// Удаляет узел списка с указанным индексом

procedure Save(p: TListPtr; f: string); // Сохраняет список в файле

procedure Load(p: TListPtr; f: string); // Загружает список из файла

procedure Sort(p: TListPtr);// Сортирует элементы списка с помощью компаратора по умолчанию

implementation

end.

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