using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace lab1.CollectionGenericObjects; public class MassiveGenericObjects : ICollectionGenericObjects where T : class { /// /// Массив объекта, которые храним /// private T?[] _collection; public int Count => _collection.Length; public int SetMaxCount { set { if (value > 0) { if (_collection.Length > 0) { Array.Resize(ref _collection, value); } else { _collection = new T?[value]; } } } } /// /// Конструктор /// public MassiveGenericObjects() { _collection = Array.Empty(); } public T? Get(int position) { // проверка позиции if (position >= _collection.Length || position < 0) return null; return _collection[position]; } public int Insert(T obj) { // TODO вставка в свободное место набора int index = 0; while (index < _collection.Length) { if (_collection[index] == null) { _collection[index] = obj; return index; } index++; } return -1; } public int Insert(T obj, int position) { // TODO проверка позиции // TODO проверка, что элемент массива по этой позиции пустой, если нет, то // ищется свободное место после этой позиции и идет вставка туда // если нет после, ищем до // TODO вставка if (position >= _collection.Length || position < 0) return -1; if (_collection[position] == null) { _collection[position] = obj; return position; } int index = position + 1; while (index < _collection.Length) { if (_collection[index] == null) { _collection[index] = obj; return index; } index++; } index = position - 1; while (index >= 0) { if (_collection[index] == null) { _collection[index] = obj; return index; } index--; } return -1; } public T? Remove(int position) { // TODO проверка позиции // TODO удаление объекта из массива, присвоив элементу массива значение null if (position >= _collection.Length || position < 0) return null; T temp = _collection[position]; _collection[position] = null; return temp; } }