Не удалось изменить связанную очередь - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть класс, созданный из книги, которую я пытаюсь изменить.У меня есть метод постановки в очередь, где я удалил передний узел, и я хочу просто иметь задний узел.У меня возникли проблемы с методом удаления, который следует.Код используется для проверки, является ли строка палиндромом, но я не могу понять, почему она не отображается как палиндром.Основная проблема, с которой я сталкиваюсь, заключается в невозможности понять, как получить следующую ссылку в начале очереди.

public class LinkedQueue<T> implements QueueInterface<T>
{
  protected LLNode<T> front;     // reference to the front of this queue
  protected LLNode<T> rear;      // reference to the rear of this queue
  protected int numElements = 0; // number of elements in this queue

  public LinkedQueue()
  {
    front = null;
    rear = null;
  }

  public void enqueue(T element)
  // Adds element to the rear of this queue.
  { 
    LLNode<T> newNode = new LLNode<T>(element);

    if( rear == null )
    {
        front = newNode;
    }
    else
    {
        rear.setLink(newNode);
        rear = newNode;
        numElements++;
    }
  }     

  public T dequeue()
  // Throws QueueUnderflowException if this queue is empty;
  // otherwise, removes front element from this queue and returns it.
  {
    if (isEmpty())
      throw new QueueUnderflowException("Dequeue attempted on empty queue.");
    else
    {
      T element;
      element = front.getInfo();
      front = front.getLink();
      if (front == null)
        rear = null;
      numElements--;
      return element;
    }
  }

  public boolean isEmpty()
  // Returns true if this queue is empty; otherwise, returns false.
  {              
    return (front == null);
  }

  public boolean isFull()
  // Returns false - a linked queue is never full.
  {              
    return false;
  }

  public int size()
  // Returns the number of elements in this queue.
  {
    return numElements;
  }

}

Я изменил это на

public class LinkedQueue<T> implements QueueInterface<T>
{
//  protected LLNode<T> front;     // reference to the front of this queue
  protected LLNode<T> rear;      // reference to the rear of this queue
  protected int numElements = 0; // number of elements in this queue

  public LinkedQueue()
  {
//    front = null;
    rear = null;
  }

  public void enqueue(T element)
  // Adds element to the rear of this queue.
  { 
    LLNode<T> newNode = new LLNode<T>(element);

    if( rear == null )
    {
        rear = newNode;
        rear.setLink(newNode);
    }
    else
    {
        LLNode<T> start = rear.getLink();
        rear.setLink(newNode);
        rear = newNode;
        rear.setLink(start);
    }
    numElements++;
  }     

  public T dequeue()
  // Throws QueueUnderflowException if this queue is empty;
  // otherwise, removes front element from this queue and returns it.
  {
    if (isEmpty())
      throw new QueueUnderflowException("Dequeue attempted on empty queue.");
    else
    {
      T element;
      element = rear.getInfo();
      rear = rear.getLink();
      if (rear.getLink() == null)
        rear = null;
      numElements--;
      return element;
    }
  }

  public boolean isEmpty()
  // Returns true if this queue is empty; otherwise, returns false.
  {              
    return (false);
  }

  public boolean isFull()
  // Returns false - a linked queue is never full.
  {              
    return false;
  }

  public int size()
  // Returns the number of elements in this queue.
  {
    return numElements;
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...