У меня есть код ( не мой ), в котором реализована очередь, с методом добавления и удаления элементов. Я не могу понять, зачем инициализировать поле rear как rear = -1
? Как я думал, это из-за того, чтобы не выходить за пределы массива, но зачем его тогда сразу объявлять как rear = -1? Ведь первый элемент 0. А так же, строчка в методе add(). Как оно работает ? Буду очень благодарен за объяснение.
queue[++rear] = elem; //увеличение Rear и вставка
nElem++; // увеличение количества элементов в очереди
Код программы:
public class Queue {
private int[] queue;
private int maxSize; // максимальное количество элементов в очереди
private int nElem; // текущее количество элементов в очереди
private int front;
private int rear;
public Queue(int maxSize) {
this.maxSize = maxSize;
queue = new int[maxSize];
rear = -1;
front = 0;
nElem = 0;
}
public void add(int elem) {
if (rear == maxSize - 1) { // циклический перенос
rear = -1;
}
queue[++rear] = elem; //увеличение Rear и вставка
nElem++; // увеличение количества элементов в очереди
}
public int delete() {
int temp = queue[front++]; // получаем первый элемент из очереди
if (front == maxSize) { // циклический перенос
front = 0;
}
nElem--; // уменьшаем количество элементов в очереди
return temp;
}
public int getFront() {
return queue[front];
}
public int getRear() {
return queue[rear];
}
public boolean isFull() {
return (nElem == maxSize - 1);
}
public boolean isEmpty() {
return (nElem == 0);
}
public int getSize() {
return nElem;
}
Код Main:
public class Main {
public static void main(String[] args) {
Queue myQueue = new Queue(5);
myQueue.add(10);
myQueue.add(20);
myQueue.add(30);
myQueue.add(40);
myQueue.add(50);
System.out.println(myQueue.toString());
myQueue.delete();
myQueue.delete();
myQueue.delete();
myQueue.add(60);
while (!myQueue.isEmpty()) {
int n = myQueue.delete();
System.out.println("Elem: " + n);
}
}
}
В методе add
как раз у вас и происходит увеличение индекса в строке queue[++rear] = elem; //увеличение Rear и вставка
Потому и при инициализации задано -1, при первом добавлении индекс сместиться на требуемые 0, так как -1+1 = 0
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я скачал приложение с рецептамиЯ туда хочу добавлять свои рецепты которые проверил, как и на сколько они поднимают сахар
При создании, классу Person передается возраст в годах (от 1 до 100)Метод getMilliseconds пересчитывает возраст в миллисекундах
Я изучаю графическую библиотеку swing и столкнулся с проблемой - текст не изменяет своё положение относительно jpanel при изменении параметров...
Скачал с офф сайта и распаковал архив в usr/local/Потом запускаю