Есть ли у этой подобной очереди структуры данных имя? - PullRequest
2 голосов
/ 21 мая 2011

Это довольно просто, только с двумя операциями, вы можете либо выдвинуть значение, либо получить все значения, удалив все эти значения из структуры.Может быть легко реализовано с помощью агрегата очереди.

  • push(value)
  • get() -> list of values, clears contents

Ответы [ 2 ]

2 голосов
/ 21 мая 2011

По моему мнению, нет общего названия для структуры данных, которая обеспечивает эту функциональность.В зависимости от порядка списка, предоставляемого get(), он похож на стек или очередь .

Если предположить, что Java, это может работать для вас (не проверено):

import java.util.ArrayList;
import java.util.Collection;
import java.util.Stack;

public class FlushStack<E> extends Stack<E> {

    public Collection<E> get() {
        ArrayList<E> elements = new ArrayList<E>(this);
        this.clear();
        return elements;
    }

}
2 голосов
/ 21 мая 2011

По сути, это стек, только то, что "get" делает повторяющееся "pop", пока стек не станет пустым.В псевдокоде это будет что-то вроде:

def push (v): stack.push (v)

def get ():
    retVal = []
    while stack.isNotEmpty: retval += [stack.pop () ]
    return retVal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...