ВУЗ:
Составители:
Рубрика:
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. 
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 37
 - 38
 - 39
 - 40
 - 41
 - …
 - следующая ›
 - последняя »
 
