【问题标题】:Writing an implementation of deque class编写双端队列类的实现
【发布时间】: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


【解决方案1】:
back = back.back; //modify the Deque to point to the node behind back 
back.next = null; //and delete what used to be "back"

【讨论】:

  • 当我尝试将这些语句添加到我的方法中时,它会抛出“找不到符号”错误
  • 虽然此代码块可能会回答 OP 的问题,但如果您解释此代码与问题中的代码有何不同以及为何不同,以及为什么在不介绍的情况下解决了问题,则此答案会更有用其他人。
猜你喜欢
  • 2013-03-10
  • 2016-08-18
  • 2013-12-27
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 2011-06-23
  • 2017-05-05
  • 2018-07-02
相关资源
最近更新 更多