реализация собственнной очереди на односвязном списке C#
public class QueueItem<T>
{
public T value;
public QueueItem<T> next;
public QueueItem(T value)
{
this.value = value;
next = null;
}
}
public class Queue<T>
{
private QueueItem<T> head;
private QueueItem<T> tail;
public Queue()
{
head = null;
tail = null;
}
public bool IsEmpty()
{
return head == null;
}
public void Enqueue(T value)
{
QueueItem<T> newItem = new QueueItem<T>(value);
if (tail == null)
{
head = newItem;
tail = newItem;
}
else
{
tail.next = newItem;
tail = newItem;
}
}
public T Dequeue()
{
if (head == null)
throw new InvalidOperationException("Queue empty");
T value = head.value;
head = head.next;
if (head == null)
tail = null;
return value;
}
}
Класс `QueueItem<T>` определяет элемент списка. Он содержит значение элемента и указатель на следующий элемент. Класс `Queue<T>` определяет очередь. Он содержит ссылки на начало и конец списка, а также методы для добавления и удаления элементов. Метод `IsEmpty` проверяет, пуста ли очередь. Метод `Enqueue` добавляет элемент в конец очереди. Если очередь пуста, то и начало, и конец списка будут ссылаться на новый элемент. Если очередь уже содержит элементы, то новый элемент добавляется в конец списка и обновляется указатель `tail`. Метод `Dequeue` удаляет и возвращает элемент из начала очереди. Если очередь пуста, генерируется исключение.
Таким образом, реализация своей собственной очереди на основе односвязного списка в C# позволяет эффективно организовать данные, помещенные в очередь по принципу FIFO. Операции добавления и удаления элементов выполняются за константное время O(1), что делает очередь на основе односвязного списка быстрой и эффективной стркутурой данных.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет