0

我必须在 a 上写一小段代码deque,但是如果有人可以帮助我使用其中一种方法(例如添加对象的方法),我不确定如何为这些方法编写代码到双端队列的来源),那么这会让我开始。我确信我可以管理其余的方法,只是目前我很困惑。

4

2 回答 2

6

双端队列通常实现为双向链表。您可以通过跟踪列表中的第一个和最后一个元素并让每个元素跟踪其前任和后继来实现双向链表。

public class Deque<T> {
    private class Node {
        Node(T value) {
            this.value = value;
        }
        T value;
        Node next, prev;
    }

    private Node first, last;

    public void addFront(T value) {
        Node oldFirst = first;
        first = new Node(value);

        // The old first item is now the second item, so its the successor of
        // the new first item
        first.next = oldFirst;

        // if first was null before, that means the deque was empty
        // so first and last should both point to the new item
        if(oldFirst == null) {
            last = first;
        } else {
            // If there previously was a first element, this element is
            // now the second element and its prev field should point to
            // the new first item
            oldFirst.prev = first;
        }
    }
}
于 2009-08-08T14:35:42.817 回答
2

我不确定您到底在追求什么,但是Javadoc中列出了 Deque 的可用方法

于 2009-08-08T14:32:08.393 回答