当前位置: 首页 > 面试题库 >

双面排队问题

金伟
2023-03-14
问题内容

我正在尝试运行此方法,以将通用值(EltType)插入到双面队列(双端队列)中,但是我一直收到无法确定的outOfBoundsException。有人能帮我这个忙吗?这只是代码的一部分,但我认为可以将其拼凑起来!

  private final int CAPACITY = 10;
  private int capacity;
  private int end;
  private EltType deque[];  

  public ArrayBasedDeque() {
    this.capacity = CAPACITY;
    deque = (EltType[]) (new Object[capacity]);  
  }

    public void insertFirst(EltType first) {
        if(!isEmpty()) {
        EltType[] tempArray;
        tempArray = (EltType[]) new Object[CAPACITY+1];
        for (int i=0;i<=deque.length;i++) {
          tempArray[i+1] = deque[i]; 
        }
        deque = tempArray; 
        }
       deque[0] = first;
      }

  public boolean isEmpty() {
    boolean returned;
    if (deque.length < 1) {
     returned = true; 
    }else {
     returned = false; 
    }
    return returned;
  }

错误:

java.lang.ArrayIndexOutOfBoundsException: 10
    at ArrayBasedDeque.insertFirst(ArrayBasedDeque.java:48)
    at TestABD.main(TestABD.java:5)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:271)

问题答案:
for (int i=0;i<=deque.length;i++) {

应该变成

for (int i=0;i<deque.length;i++) {

您使用了“小于或等于”,但是数组的最后一项的索引为(length-1)。



 类似资料:
  • 因此,我正在阅读Maged M.Michael和Michael L.Scott的文章《简单、快速、实用的非阻塞和阻塞并发队列算法》,有一个小问题我不明白: 假设我们有两个并发线程,它们在队列初始化后立即被触发。其中一个线程调用< code>enqueue,另一个调用< code>dequeue。是什么阻止它们同时访问虚拟节点的< code>next字段?当< code>enqueue线程写入< c

  • 问题内容: 抱歉,下面是我在这里遇到的一个问题:在这里,我试图运行此方法以从双面队列(双端队列)中删除通用值(EltType),但是我一直遇到错误,我两次调用insertFirst ,然后将值“ 3”插入数组两次,然后,当我运行removeFirst时,它将打印出“ 3”一次,然后打印出“ Null”。有人可以帮我吗? 谢谢 :) 问题答案: 明显的问题是它永远不会改变。 将永远返回。现在,让我们

  • 我目前正在开发一个Twilio排队系统,但我被困在如何让电话排队并连接到代理上。 我把所有的电话都排在队列中,我的理解是,我们需要呼叫出队列,下面是twilio网站上可用的示例响应。 但是,当有人打电话给twilio时,这可以作为对twilio的回应发送。 那么,特工应该拨打twilio号码吗?如果是这样的话,我们是否需要为这个案例保留一个内部号码,除了我们为来电提供的支持号码? 谢谢你,巴斯卡。

  • 问题内容: 我使用mbostock / queue 来排队一些异步操作。不仅要进行速率限制(UI生成的事件很少,后端可以缓慢地处理该事件),而且还要确保依次处理它们。我用它像 我已经使用angular.js $ q进行异步操作了。所以,我必须使用,还是可以建立一个队列(这本来就是https://github.com/kriskowal/q) 谢谢。 问题答案: 基本$ q链示例 是的,您 可以 使

  • 习题3-10 排队等候 某社会福利机构组织一项活动,参加的对象分为两类,一类是老年人(年龄≥60岁),另一类是年轻人(年龄<60岁)。但参加该项活动要排队等候,为了照顾老年人,排队等候时,老年人排到前面,年轻人排在后面,当老年人到来排队时,排到前面老年人排队部分的后面,年轻人到来排队时,排到整个队伍的最后。对于参加活动的n个人(5≤n≤15),建立并输出这n个人的排队的情况。 输入格式: 首先输入

  • 排队用车 基本描述 排队功能是在高峰时段、高峰区域,乘客的数量大于司机的数量时,乘客端发出的用车需求进行排队,按照“先到先得”的原则顺序进行车辆的指派。具有以下优势: 排队可以帮助乘客对当前前面有多少人用车以及预计需要等待的时间有心理预期。 降低乘客在叫不到车订单超时,频繁重复叫车的繁琐。 注意:接入排队必须同时接入取消改派 排队仅支持普通型快车(require_level=600),仅支持实时发