basically just change 'until' to 'while'. I think you'd have to make every condition the opposite though...
Try:
while (push_time <= push_when || event[push_prev].next >= 0)
{
push_time += event[push_next].when;
push_prev = push_next;
push_next = event[push_next].next;
}
//...
As far as I know, you can't have 'do{}while()' though.