Как работает функция удаления максимального элемента в стеке?
Я наткнулся на это замечательную функцию и я хотел бы в ней разобраться, как она работает.
stack* deleteMaxValue(stack* begin) {
stack* t = begin, * p = begin->next;
for (; p; p = p->next)
if (p->inf >= t->inf) t = p;
p = begin;
if (p != t) {
while (p->next != t) p = p->next;
p->next = t->next;
}
else
begin = t->next;
delete t;
return begin;
}