Основы программирования. Указатели. Динамические структуры данных. Абстрактные типы данных. Классы - 38 стр.

UptoLike

Составители: 

40
function Stack.IsEmpty(Self: IntStack): boolean;
begin
Result := Self.head=nil;
end;
При вызове s1.IsEmpty компилятор добавляет в качестве первого параметра
объект, вызвавший метод: s1.IsEmpty(s1). Таким образом, переменная Self
вводится внутри метода неявно (как и переменная Result внутри функции) и
обозначает ссылку на объект, вызвавший метод, то есть ссылку на самого себя.
3.3 Класс «Очередь»
Очередьэто абстрактный тип данных, состоящий из последовательности
элементов, которые можно добавлять в конец, а извлекать из начала. Как и стек,
очередь можно проверять на пустоту.
Говорят, что очередь реализует принцип FIFO – first in first out (первым
пришелпервым вышел): элемент, добавленный в очередь первым, будет извле-
чен из нее также первым.
Составим открытый интерфейс
класса, представляющего очередь целых чи-
сел:
type Queue = class
public
constructor Create;
destructor Destroy;
procedure Enqueue(i: integer);
function Dequeue: integer;
function First: integer;
function IsEmpty: boolean;
end;
Процедура Enqueue добавляет элемент i в конец очереди, функция Dequeue
извлекает из очереди первый элемент и возвращает его значение, функция First
возвращает значение первого элемента, не извлекая его из очереди, и, наконец,
функция IsEmpty возвращает логическое значение True, если очередь пуста, и
False в противном случае. Очевидно, при выполнении операций Enqueue и
First очередь должна быть непустой, что проверяется с помощью вызова про-
цедуры Assert. Отметим, что иногда вместо имен Enqueue и Dequeue исполь-
зуются имена Push и Pop.
Клиентская программа для класса «Очередь»
Задача. Дана последовательность целых положительных чисел, заканчи-
вающаяся числом 0. Вывести сначала нечетные, а потом двузначные числа в том
же порядке, что и в исходной последовательности.