Перейти к содержанию

Реализации алгоритмов/Очередь

Материал из Викиучебника — открытых книг для открытого мира

Очередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO).

Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется.

public class Node {
	
	public Node next;
	
	public int value;
	
}

public class Queue {
	Node first,last;
	
	public void push(Object obj) {
		if (obj == null || !(obj instanceof Node))
			return;
		else {
			Node node = (Node)obj;
			if (first == null) {
				last = node;
				first = last;
			}
			else {
				last.next = node;
				last = last.next;
			}
		}
	}
	
	public Node pop() {
		if (first == null) {
			return null;
		}
		else {
			if (first == last) {
				Node buf = first;
				first = null;
				last = null;
				return buf;
			}
			else {
				Node buf = first;
				first = first.next;
				return buf;
			}
		}
	}
}