select b.extra_column
,b.department_id
,b.department_name
,b.manager_id
,b.location_id
,c.employee_id
,c.first_name
,c.last_name
,c.email
,c.phone_number
,c.hire_date
,c.job_id
,c.salary
,c.commission_pct
,c.manager_id
,c.department_id
,a.location_id
,a.street_address
,a.postal_code
,a.city
,a.state_province
,a.country_id
from departments b
,locations a
,employees c
where a.location_id = b.location_id
and c.employee_id = b.manager_id
and b.department_id = c.department_id;
问题是 - 为什么我们必须这样做this.rear =(this.rear + 1)%this.capacity;在java中创建一个enqueue函数?
答案 0 :(得分:0)
在单端队列中没有这样的概念。我会假设您正在处理Circular Queue
。 this.rear = (this.rear + 1)%this.capacity;
用于将后方指向rear+1'th
索引。 (特别是当后方已到达(n-1)th
位置时。)
例如 :array[10]
即capacity = 10
且rear is at arr[9]
和arr[0..x] (where x<=(n-1))
为空
在这种情况下,队列应该允许插入,因为数组中仍有空的空间。为此,应用公式
rear = 9
this.rear = (this.rear + 1)%this.capacity;
即。 this.rear = (9 + 1)%10 = 0
即插入0'th
索引
同样在when rear = 2
this.rear = (2 + 1)%10 = 3
等等
答案 1 :(得分:0)
它实现了循环队列,即每次后面或头部计数器到达数组末尾时返回到数组的开头。
当后计数器小于阵列长度时,后部%长度=后部。
当后计数器等于阵列的长度时,后部%长度为0,后部计数器在下一圈进行。
最后,当后部大于数组的长度时,后部%长度将返回小于数组长度的值,并且等于后部 - (array.length *传递的圆圈数)。
因此,通过在后面划分长度,我们得到余数,这是我们想要放在队列末尾的元素的下一个位置。