public MyQueueEnumerator(MyQueue <T> q) { Collection = new T[q.Count]; q.CopyTo(Collection, 0); curIndex = -1; curElem = default(T); }
//переопределение стандартных методов public override bool Equals(object obj) { MyQueue <T> q = obj as MyQueue <T>; if (q == null || Count != q.Count) { return(false); } else { T[] arr1 = new T[Count]; T[] arr2 = new T[Count]; CopyTo(arr1, 0); q.CopyTo(arr2, 0); bool b = true; int i = 0; while (i < Count && b == true) { if (!arr1[i].Equals(arr2[i])) { b = false; } i++; } return(b); } }
public MyLinkedQueue(MyQueue <T> Queue) { Head = null; Tail = null; Count = Queue.Count; T[] data = new T[Count]; Queue.CopyTo(data, 0); Head = new Node <T>(data[0]); Node <T> n = Head; for (int i = 1; i < Count; i++) { n.next = new Node <T>(data[i]); n.next.prev = n; n = n.next; } Tail = n; }