Как я могу создать очередь только с учетом реализованных методов? - PullRequest
0 голосов
/ 21 января 2019

У меня есть класс 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 голосов
/ 21 января 2019

Вызовите методы add или remove внутри методов enqueue и dequeue класса Queue, ведите указатель на первый и последний.

 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...