// используется во время отладки так что даже не считаю public MyStack GetCopy() { MyStack tmp_stack = new MyStack(GetMaxSize()); while (!IsEmpty()) { tmp_stack.Add(Pop()); } MyStack for_return = new MyStack(GetMaxSize()); // 11 while (!tmp_stack.IsEmpty()) { for_return.Add(tmp_stack.Peek()); Add(tmp_stack.Pop()); } return(for_return); }
public int GetElement(int pos) // 26n + 20 = 11 + 13n + 8 + 13n + 1 { MyStack tmp_stack = new MyStack(GetTopPointer()); // 11 = 10 + 1 N_op += 2; while (TopPointer != pos + 1) // 13n = n раз, где n размер стека, так что (3(проверка) + 10(внутр)) * n { N_op += 4; tmp_stack.Add(Pop()); // 10 } int element = Peek(); // 8 = 7 + 1 N_op += 2; while (!tmp_stack.IsEmpty()) // 13n { N_op += 4; Add(tmp_stack.Pop()); // 3(add) + 7(pop) = 10 } N_op += 1; return(element); // 1 }