Материал: 7 - Презентация - Дженерики, Абстрактные типы данных, Стек, Очередь

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Центрдистанционногообучения

Операции над очередью (1/3)

• Мы используем

Algorithm size()

{ return (N - f + r) mod N;}

оператор деления по

 

модулю (остаток от

Algorithm isEmpty()

целочисленного

деления)

{ return (f = r); }

 

 

Q

0 1 2

f

r

Q

0 1 2

r

f

46 online.mirea.ru

Центрдистанционногообучения

Операции над очередью (2/3)

Операция включения в очередь генерирут исключение, если очередь заполнена, то есть массив полон

Это исключение зависит от конкретной реализации

Algorithm enqueue(o) { if ( size() = N - 1)

throw FullQueueException; else

{ Q[r] = o;

r = (r + 1) mod N ;

}

}

Q

0 1 2

f

r

Q

0 1 2

r

f

47 online.mirea.ru

Центрдистанционногообучения

Операции над очередью (3/3)

Операция исключения из очереди генерирует исключение, если очередь пуста

Это исключение указывается в AТД очереди

Algorithm dequeue() { if ( isEmpty() )

throw EmptyQueueException else

{ o = Q[f];

f = (f + 1) mod N; return o;

}

}

Q

0 1 2

f

r

Q

0 1 2

r

f

48 online.mirea.ru

Центрдистанционногообучения

Интерфейс очереди в Java

В Java есть Интерфейс,

соответствующий АТД нашей очереди

Требуется определение класса

EmptyQueueException

Нет соответствующего встроенного класса Java

public interface Queue {

public int size();

public boolean isEmpty();

public Object front() throws

EmptyQueueException;

public void enqueue(Object o);

public Object dequeue() throws

EmptyQueueException;

}

49 online.mirea.ru

Центрдистанционногообучения

Реализация очереди на основе связанного списка (1/3)

Для реализации очереди используется обобщенный односвязнный список.

Передняя часть очереди является заглавным звеном связанного списка и задняя часть очереди это хвост связанного списка

В классе очереди необходимо поддерживать ссылки как для заглавных, так и хвостовых узлов в списке.

каждый метод на АТД очереди на основе односвязной реализации списка работает O (1) время.

Два метода, называемых dequeue() and enqueue(), реализваны на следующем слайде.

50 online.mirea.ru