В настоящее время я пишу реализацию ArrayDeque. Я работаю над методами pollFirst, pollLast, removeFirst и removeLast. Я не совсем уверен, правильны ли мои методы, которые я написал, или нет. Я написал драйвер для проверки этих методов, и я не уверен, что вывод правильный.
Драйвер можно найти здесь: https://pastebin.com/bH0D78jG
Вот следующие методы:
pollFirst:
T result = (T) deque[head]; // Element is null if deque empty
if (result == null)
return null;
deque[head] = null; // Must null out slot
head = (head + 1) & (deque.length - 1);
return result;
pollLast:
int t = (tail - 1) & (deque.length - 1);
T result = (T) deque[t];
if (result == null)
return null;
deque[t] = null;
tail = t;
return result;
removeFirst
T x = pollFirst();
if (x == null)
throw new NoSuchElementException();
return x;
removeLast
T x = pollLast();
if (x == null)
throw new NoSuchElementException();
return x;
это изображение примера вывода
вещь, которую я 'Больше всего меня интересуют методы и способ вывода массива после pollFirst и pollLast. Разве не должно быть нуля на каждом конце deque?