public MyLinkedStack(MyStack <T> s) { Count = s.Count; T[] data = new T[Count]; s.CopyTo(data, 0); Node <T> n = new Node <T>(data[0]); for (int i = 1; i < Count; i++) { n.next = new Node <T>(data[i]); n.next.prev = n; n = n.next; } Top = n; }
public MyArrayStack(MyStack <T> Stack) { Count = Stack.Count; MyArrayStack <T> s = Stack as MyArrayStack <T>; if (s != null) { Capacity = s.Capacity; } else { Capacity = (Count / 10 + 1) * 10; } data = new T[Capacity]; s.CopyTo(data, 0); }
//переопределение стандартных методов public override bool Equals(object obj) { MyStack <T> s = obj as MyStack <T>; if (s == null || Count != s.Count) { return(false); } else { bool b = true; int i = 0; while (i < Count && b == true) { if (!this[i].Equals(s[i])) { b = false; } i++; } return(b); } }