Создание интерфейса для символьных очередей.
Три реализации будут разработаны:
Линейная очередь фиксированного размера.
Циркулярная очередь (повторно использует пространство массива).
Динамическая очередь (растет по мере необходимости).
1 Создайте файл с именем ICharQ.java
// Интерфейс очереди символов.
общедоступный интерфейс ICharQ {
// Вставляем символ в очередь.
void put(char ch);
// Удалить символ из очереди.
символ get();
}
2 Создайте файл с именем IQDemo.java.
3 Начните создавать IQDemo.java, добавив показанный здесь класс фиксированной очереди:
4 Добавьте класс CircularQueue, показанный ниже, в IQDemo.java.
Операция с циклической очередью: повторно использует пространство, освободившееся в массиве при удалении элементов. Может хранить неограниченное количество элементов, пока есть удаления.
Граничные условия: очередь не заполняется при достижении конца массива, а когда неудаленный элемент заменяется новым.
Метод put() должен проверить несколько условий, чтобы определить, заполнена ли очередь.
Условия заполнения очереди: Очередь заполнена, если: putloc — меньшая единица, чем getloc. putloc находится в конце массива, а getloc — в начале.
Условие пустой очереди: очередь пуста, если getloc и putloc равны.
Размер массива: для облегчения проверок базовый массив создается на одну единицу больше размера очереди.
5 Вставьте класс DynQueue, показанный ниже, в IQDemo.java. Он реализует «расширяемую» очередь, размер которой увеличивается, когда заканчивается место.
6 Чтобы продемонстрировать три реализации ICharQ, вставьте следующий класс в IQDemo.java. Он использует ссылку ICharQ для доступа ко всем очередям.
класс IQDemo {
public static void main(String args[]) {
фиксированная очередь q1 = новая фиксированная очередь(10);
DynQueue q2 = новая DynQueue(5);
CircularQueue q3 = новая CircularQueue(10);
ICharQ iQ;
символ ch;
интервал я;
iQ = q1;
// Вставляет некоторые символы в фиксированную очередь.
for(i=0; i
iQ.put((char) ('A' i));
// Отображает очередь.
System.out.print("Содержимое фиксированной очереди: ");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q2;
// Вставляет некоторые символы в динамическую очередь.
for(i=0; i
iQ.put((char) ('Z' - i));
// Отображает очередь.
System.out.print("Содержимое динамической очереди: ");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q3;
// Вставляет несколько символов в циклическую очередь.
for(i=0; i
iQ.put((char) ('A' i));
// Отображает очередь.
System.out.print("Содержимое циклической очереди: ");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
// Вставляем больше символов в циклическую очередь.
for(i=10; i
iQ.put((char) ('A' i));
// Отображает очередь.
System.out.print("Содержимое циклической очереди: ");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println("\nХранение и потребление из"
"круговая очередь.");
// Сохраняет и потребляет элементы из циклической очереди.
for(i=0; i
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}
7 Создайте циклическую версию DynQueue. Добавьте в ICharQ метод сброса(), который очищает очередь. Создайте статический метод, который копирует содержимое очереди одного типа в другой.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3