Так что у меня завтра экзамен в Java, и есть этот код очередей, что я не получаю, это полный класс:Я не понимаю, как работает этот код?
public class queues {
static final int max = 5;
static int[] queue = new int[max];
static int t = 0, h = 0;
static boolean isempty() {
return t == h;
}
static boolean isfull() {
return (t + 1) % max == h;
}
static void enqueue(int e) {
if (isfull()) {
System.out.println("Queue is Full");
} else {
queue[t] = e;
t = (t + 1) % max;
}
}
static int dequeue() {
if (isempty()) {
System.out.println("Queue is empty");
return 0;
} else {
int temp = queue[h];
queue[h] = 0;
h = (h + 1) % max;
return temp;
}
}
}
Но то, что я не получаю это enqueue()
метода, когда else. Не должна ли линия t=(t+1)%max;
быть до queue[t]=e;
, или не стоит ли писать queue[t=(t+1)%max]=e
? Потому что мы вставляем элемент в адрес, который находится рядом с t, а не сам. Может кто-нибудь объяснить мне, как эта вставка работает?
конвенции Следуйте именовании и форматировать Ваш код. – eldo
не пытайтесь выучить концепцию из кода, если вы новичок. Сначала поймите, как работает очередь и основные операции. Затем попробуйте ввести код самостоятельно. Удачи! – uniquephase
просто пройдите код для случая пустой очереди, вы фактически вставляете 't'! – luk2302