Java Deque без использования каких-либо существующих классов, таких как LinkedList? - PullRequest
0 голосов
/ 08 августа 2009

Мне нужно написать очень короткий фрагмент кода на deque, однако я не уверен, как написать код для методов, если кто-то может помочь мне с одним из методов (например, метод, чтобы добавить объект в (из-за deque), тогда это начало бы меня. Я уверен, что смогу справиться с остальными методами, просто в тот момент, когда я довольно озадачен.

Ответы [ 2 ]

6 голосов
/ 08 августа 2009

Запросы обычно реализуются в виде двусвязных списков. Вы реализуете двусвязный список, отслеживая первый и последний элемент списка и позволяя каждому элементу отслеживать его предшественника и преемника.

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;
        }
    }
}
2 голосов
/ 08 августа 2009

Я не уверен, что именно вы ищете, но доступные методы для Deque перечислены в Javadoc

...