2015-10-05 55 views
0

我目前正在使用ListNodes定义我自己的类Deque,名为myDeque。我面临的问题涉及到remove()方法。你如何修改Deque指向后面的节点并删除曾经是“后退”的内容?谢谢编写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; 
} 
+0

的Java已经有一个['Deque'(http://docs.oracle.com/javase/7/docs/api/java/util/Deque.html)(和很少的实现,像['ArrayDeque'](http://docs.oracle.com/javase/7/docs/api/java/util/ArrayDeque.html))。为什么你不能使用其中之一? –

+0

这是一个项目,我们使用的代码必须自己实现,以更好地理解listnode数据结构 – user3424216

回答

0
back = back.back; //modify the Deque to point to the node behind back 
back.next = null; //and delete what used to be "back" 
+0

当我尝试将这些语句添加到我的方法中时,它会抛出“找不到符号”错误 – user3424216

+0

虽然此代码块可能会回答OP的问题,如果你解释这个代码与问题中的代码有何不同以及为什么解决这个问题而不介绍其他问题,这个答案会更有用。 – Mifeet