Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
02.01.2020
Размер:
41.02 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИИ

Новосибирский государственный технический университет

Практическое задание №6

по дисциплине информатика и программирование

на тему: «Список целых чисел. Стек целых чисел»

Факультет бизнеса

Группа: ФБИ-11

Студенты: Рыбаченко А.А.

Преподаватель: Зайцев М.Г.

Новосибирск

2012г.

Цель: Сформировать практические навыки реализации абстрактных типов данных на основе динамических информационных структур с помощью средств динамического распределения памяти Object Pascal.

Задание:

  1. Реализовать тип Список целых чисел, в соответствии с приведенной ниже спецификацией.

  2. Протестировать каждую операцию, определенную на типе.

Текст программы:

unit UList;

Interface

uses SysUtils,Dialogs;

type

PNode = ^Node; // Указатель на узел списка

List = PNode; // Список узлов.

T = integer; // Тип элементов списка

Node = record // Узел списка.

key: T; // Элемента списка.

next: PNode; // Указатель на следующий узел списка (служебное поле).

end;

{----Основные операции--------------------------------}

//-----------------------------------------------------------------------------

procedure AddR(var L: List; a: T);

// Операция ДобавитьСправа. Добавляет в список L элемент а справа .

//-----------------------------------------------------------------------------

procedure AddL(var L: List; a: T);

// Операция ДобавитьСлева. Добавляет в список L элемент a слева.

//-----------------------------------------------------------------------------

function H(var L: List): T;

// Операция Голова. Удаляет из списка голову и возвращает её значение.

//-----------------------------------------------------------------------------

function H_(var L: List): T;

// Операция ГоловаСправа. Удаляет из списка голову справа и возвращает её значение.

//-----------------------------------------------------------------------------

function Tail(var L: List): List;

// Операция Хвост. Выделяет из списка L хвост и возвращает указатель на него.

//-----------------------------------------------------------------------------

function Tail_(var L: List): List;

// Операция ХвостСправа. Выделяет из списка L хвост справа и возвращает указатель на него.

//-----------------------------------------------------------------------------

procedure Empty(var L: List);

// Операция Опустошить. Опустошает список.

//-----------------------------------------------------------------------------

procedure Merge(var L,N: List);

// Операция Соединить. К списку L добавляет список N справа.

//-----------------------------------------------------------------------------

function Number(L: List): Cardinal;

// Операция Элементов. Возвращает количество элементов в списке.

//-----------------------------------------------------------------------------

function ListToStr(L: List): String;

// Операция СписокВСтроку. Формирует строку, содержащую элементы списка.

{----Вспомогательные операции--------------------------------}

//-----------------------------------------------------------------------------

function CreateE(a: T): PNode;

// Создаёт узел списка для элемента a и возвращает указатель на него

//-----------------------------------------------------------------------------

function Next(a: PNode):PNode;

// Возвращает указатель на следующий узел списка.

//-----------------------------------------------------------------------------

function PredLast(L: List; var p: PNode): PNode;

// Возвращает адрес предпоследнего (p) и последнего узла списка.

//-----------------------------------------------------------------------------

function EToStr(a: PNode): String;

// Формирует строку, содержащую элемент a.

Соседние файлы в папке Зайцев М. Г.