Помогите, пожалуйста, с программированием на C#
Объявите класс "Очередь", имеющий поля – массив-хранилище для элементов очереди и количество элементов в очереди; методы помещения элемента (в конец) и извлечения элемента (с начала), печати очереди; свойства первого элемента, пустоты очереди, полноты очереди, размера выделенной памяти (для чтения и записи). Переопределить любую операцию.
Answers & Comments
using System;
using System.Collections.Generic;
using System.Linq;
namespace Queue
{
public class Queue<T>
{
private List<T> _items = new List<T>();
public int Count => _items.Count;
public void Enqueue(T item)
{
if(item == null)
{
throw new ArgumentNullException(nameof(item));
}
_items.Add(item);
}
public T Dequeue()
{
var item = GetItem();
_items.Remove(item);
return item;
}
public T Peek()
{
var item = GetItem();
return item;
}
private T GetItem()
{
var item = _items.FirstOrDefault();
if (item == null)
{
throw new NullReferenceException("Очередь пуста. Нет элементов для получения.");
}
return item;
}
}
}
namespace Queue
{
class Program
{
static void Main(string[] args)
{
// Создаем новую очередь.
var queue = new Queue<int>();
// Добавляем новые элементы в очередь.
queue.Enqueue(1);
queue.Enqueue(7);
queue.Enqueue(42);
queue.Enqueue(69);
queue.Enqueue(-17);
Console.WriteLine($"Очередь содержит {queue.Count} элементов.");
// Получаем элементы с удалением.
var item1 = queue.Dequeue();
Console.WriteLine($"Первый элемент из очереди {item1}.");
var item2 = queue.Dequeue();
Console.WriteLine($"Второй элемент из очереди {item2}.");
// Добавляем новый элемент в очередь.
queue.Enqueue(88);
// Просматриваем элемент без удаления.
var item3 = queue.Peek();
Console.WriteLine($"Обзор элемента без удаления {item3}.");
Console.ReadLine();
}
}
}