【发布时间】:2019-10-31 14:58:23
【问题描述】:
目前我正在编写 ArrayDeque 的实现。我正在研究 pollFirst、pollLast、removeFirst 和 removeLast 方法。我不完全确定我写的方法是否正确。我编写了一个驱动程序来测试这些方法,但我不确定输出是否正确。
驱动可以在这里找到:https://pastebin.com/bH0D78jG
这里有以下方法:
民意调查:
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;
投票最后:
int t = (tail - 1) & (deque.length - 1);
T result = (T) deque[t];
if (result == null)
return null;
deque[t] = null;
tail = t;
return result;
先删除
T x = pollFirst();
if (x == null)
throw new NoSuchElementException();
return x;
删除最后一个
T x = pollLast();
if (x == null)
throw new NoSuchElementException();
return x;
this is a picture of the sample output
我最关心的是方法以及它在 pollFirst 和 pollLast 之后如何输出数组。双端队列的每一端不应该有一个空值吗?
【问题讨论】:
-
请发布整个课程,而不仅仅是方法体。例如,代码
& (deque.length - 1)可能没问题,也可能错误,这取决于deque.length是否是2 的幂;但我无法根据您显示的内容进行检查。 -
pastebin.com/ckf5iWbv 给你,这是整个课程:)
-
我会看一下,但如果您编辑您的问题会更好 - 它会使问答页面对可能有类似问题的其他人更有用。
-
由于课程很长,如果您将其简化为一个最小的示例也会有所帮助 - 一个完整的课程,但只是演示错误所需的部分。
标签: java debugging methods arraydeque