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

UptoLike

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

41
Решение. Будем считать, что класс Queue, представляющий очередь целых,
реализован в модуле IntQueue. При вводе будем записывать нечетные числа в
первую очередь, а двузначныево вторую. По окончании ввода выведем обе оче-
реди. Далее приводится код решения:
uses IntQueue;
var q1,q2: Queue;
x: integer;
begin
q1:=Queue.Create;
q2:=Queue.Create;
while True do
begin
read(x);
if x=0 then break;
if Odd(x)
then
q1.Enqueue(x);
if (x>=10) and (x<=99) then
q2.Enqueue(x);
end;
while not q1.IsEmpty do
write(q1.Dequeue,' ');
while not q2.IsEmpty do
write(q2.Dequeue,' ');
q1.Destroy;
q2.Destroy;
end;
Заметим, что клиентская программа уже написана, а мы еще не приступали к
реализации класса «Очередь». Данный подход иллюстрирует модификацию мето-
да программирования сверху вниз применительно к абстрактным типам данных:
вначале составляется интерфейс АТД, после
чего можно писать клиентские про-
граммы, пользующиеся этим АТД. Реализация же АТД автора клиентской про-
граммы не интересует.
Класс «Очередь» на базе линейного односвязного списка
Дадим реализацию класса Queue, используя в качестве структуры данных
для хранения элементов односвязный список. Будем хранить указатели f и l на
начало и конец такого списка:
f
l
Вначале список пуст: f=l=nil.