Есть ли у этой структуры данных, подобной очереди, имя?

#data-structures

#структуры данных

Вопрос:

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

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

Ответ №1:

На мой взгляд, не существует общего названия для структуры данных, которая обеспечивает эту функциональность. В зависимости от порядка списка, предоставляемого 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;
    }

}
  

Комментарии:

1. Да, я думаю, вы правы, не смог найти для нее никаких названий, поэтому я последовал вашему предложению и назвал ее Flush * 🙂

Ответ №2:

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

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

def get ():
    retVal = []
    while stack.isNotEmpty: retval  = [stack.pop () ]
    return retVal