У меня есть класс, созданный из книги, которую я пытаюсь изменить.У меня есть метод постановки в очередь, где я удалил передний узел, и я хочу просто иметь задний узел.У меня возникли проблемы с методом удаления, который следует.Код используется для проверки, является ли строка палиндромом, но я не могу понять, почему она не отображается как палиндром.Основная проблема, с которой я сталкиваюсь, заключается в невозможности понять, как получить следующую ссылку в начале очереди.
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;
}
}