【发布时间】:2016-01-02 18:12:02
【问题描述】:
我目前正在使用 ListNodes 定义我自己的名为 myDeque 的 Deque 类。我面临的一个问题涉及remove() 方法。您如何修改 Deque 以指向后面的节点并删除曾经是“后面”的内容?谢谢
private ListNode<E> front; // Reference to first ListNode in the Deque
private ListNode<E> back; // Reference to last ListNode in the Deque
private int numElems; // Current number of ListNodes in the Deque
public MyDeque() {
front = null;
back = null;
numElems = 0;
}
public void addLast(E e) {
if (numElems == 0){
front = new ListNode<E>(e,null);
back = front;
} else {
back.next = new ListNode<E>(e,null);
back = back.next;
}
numElems += 1;
}
public boolean add(E e) {
if (numElems == 0){
front = new ListNode<E>(e,null);
back = front;
} else {
ListNode<E> prevData = back;
back.next = new ListNode<E>(e,null);
back = back.next;
}
numElems += 1;
return true;
}
public boolean remove(Object o) {
if (numElems == 0){
throw new NoSuchElementException();
}
return false;
}
public E removeLast() {
if (numElems == 0){
throw new NoSuchElementException();
}
else{
numElems = numElems - 1;
}
return null;
}
【问题讨论】:
-
Java 已经有了
Deque(以及一些实现,例如ArrayDeque)。为什么你不能使用其中之一? -
这是一个项目,我们使用的代码必须自己实现才能更好地理解listnode数据结构
标签: java linked-list nodes deque