Ваш код на самом деле:
push(&a, 10);
стек: key[0] = 10
push(&a, 20);
стек: key[0] = 10 / key[1] = 20
push(&a, 20);
стек: key[0] = 10 / key[1] = 20 / key[2] = 30
потому что в a->key[a->top++] = num;
деталь с a->top++
увеличивается в конце. Таким образом, на данный момент ваш верхний индекс равен 3. Но когда вы выталкиваете свою функцию, вы должны сделать --a->top
, чтобы сначала уменьшить ваш индекс
pop(&a);
стек: key[0] = 10 / key[1] = 20 / key[2] = 30
, ваш верхний индекс теперьравен 2.
pop(&a);
стек: key[0] = 10 / key[1] = 20
, top = 1 ваш верхний индекс теперь равен 1.
pop(&a);
стек: key[0] = 10
, ваш верхний индекстеперь равно 0.
Чтение В чем разница между int ++ и ++ int? , если вы хотите получить более подробные объяснения относительно i ++ и ++ i (или i-- и -я).