所以我明天在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()
方法。t=(t+1)%max;
行不应该在{{1}之前}},
或者我们不应该写queue[t]=e;
而不是?因为我们在t旁边的地址中插入一个元素,而不是t本身。
有人可以向我解释这个插入是如何工作的吗?
答案 0 :(得分:1)
将队列视为空,所以你的t == 0.当你用enqueue方法插入第一个元素时,它应该放在int []队列数组的0位置。然后指针t递增,以便下一次元素插入1位置。因此,首先,插入完成,然后指针递增,但反之亦然。
所以,基本上,你的t只是一个指向单元格的指针,应该插入一个新元素。