仅给定已实现的方法,如何创建队列?

时间:2019-01-21 18:33:54

标签: java arraylist queue

我有一个具有以下方法的MyList类:

public class MyList{
  ArrayList<Object> list;

  MyList(int a, int b)
  {
     list = new ArrayList<Object>();
     for(;a<=b;a++)
        list.add(a);
  }
  public void add(int index, Object o)
  {
     list.add(index, o);
  }
  public Object remove(int index) throws isEmptyException
  {
     if(isEmpty())
        throw new isEmptyException();
     else
        return list.remove(index);
  }
  public boolean isEmpty()
  {
    return list.isEmpty();
  }

这是我的课程队列。我必须仅使用MyList中的上述方法来实现以下方法。

public class Queue extends MyList{

  public void enqueue(Object o)
  {
   //adds a new Object to the queue
  }
  public Object dequeue()
  {
   //removes the next Object from the queue and returns it
  }
  public boolean empty()
  {
   //Checks if the queue is empty
  }

我真的不知道从哪里开始,因为我不知道队列的大小。有人可以给我提示如何解决这个问题吗?递归方法在这里有用吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

调用Queue类的enqueue和dequeue方法内部的add或remove,维护指向first和last的指针。

 public class Queue extends MyList {
    private int index;
    private int firstIndex;

    Queue(int a, int b)
    {
        super(a, b);
    }
    public void enqueue(Object o)
    {
        add(o);
        index++;
    }
    public Object deueue() throws Exception {
        if(firstIndex == index || isEmpty()) {
            firstIndex =0; index =0;
            throw new Exception("");
        }
        else
            return list.remove(++firstIndex);
    }
    public boolean isEmpty()
    {
        return list.isEmpty();
    }
}