internal QueueElement <T> QueueElement; //Элемент очереди public bool Add(T person, int index) //Добавить элемент { if (index <= Count) { if (Count == index) { Enqueue(person); } else { QueueElement <T> nextElement = this[index]; this[index - 1].Next = new QueueElement <T>(person); this[index].Next = nextElement; } if (++Count == Capacity) { Capacity *= 2; } return(true); } else { return(false); } }
public T Dequeue() //Исключить из очереди { Count--; T data = QueueElement.Data; QueueElement = QueueElement.Next; return(data); }
public QueueElement <T> this[int index] //Индекс элемента { get { if (index < Count) { int count = 0; foreach (var element in this) { if (count == index) { return((QueueElement <T>)element); } count++; } } else { Console.WriteLine("Индекс неверен!"); } return(null); } set { if (index < Count) { QueueElement <T> root = QueueElement; for (var count = 0; count <= Count; count++) { if (count == index) { root = value; break; } else { root = root.Next; } } } else { Console.WriteLine("Индекс неверен!"); } } }
// Перемещение вперёд public bool MoveNext() { if (_position == -1) { _position++; return(true); } if (currElement.Next != null) { _position++; currElement = currElement.Next; return(true); } return(false); }
public void Enqueue(T addElement) //Включить в очередь { Count++; Capacity *= Count == Capacity ? 2 : 1; QueueElement <T> add = new QueueElement <T>(addElement); QueueElement <T> beg = QueueElement; if (beg != null) { while (beg.Next != null) { beg = beg.Next; } add.Next = beg.Next; beg.Next = add; } else { QueueElement = add; } }
private QueueElement <T> currElement; //Текущий элемент public ClassEnumerator(MyQueue <T> t) //Конструктор с параметрами { _t = t; currElement = _t.QueueElement; }
public override bool Equals(object obj) { QueueElement <T> queue = (QueueElement <T>)obj; return(Data.Equals(queue.Data)); }
public QueueElement(T d) //конструктор с параметрами { Data = d; Next = null; }
public QueueElement <T> Next; //адресное поле public QueueElement() //конструктор без параметров { Data = default(T); Next = null; }
public void Clear() //Очистить { Count = 0; QueueElement = null; }
//Элементы и емкости другой последовательность(not ready) public MyQueue(MyQueue <T> queue) { Capacity = queue.Capacity; Count = queue.Count; QueueElement = queue.QueueElement; }