Какая польза от Integer.Min_value в этом коде? - PullRequest
0 голосов
/ 30 мая 2018

Какая польза от Integer.Min_value в этом коде?Я знаю, что это разыменование S [top] для сборки мусора, но нужно знать больше об этом

public int pop() throws Exception {

    int data;
    if (isEmpty())
        throw new Exception("Stack is empty.");
    data = S[top];
    S[top--] = Integer.MIN_VALUE; 
    return data;
} 

1 Ответ

0 голосов
/ 30 мая 2018

Представьте, что у вас есть стек, определенный как массив, такой как:

S = [ 1, 2, 3, 4, 5 ]

Стеки идут последними, первыми идут.Верхняя переменная всегда должна быть индексом элемента стека «последний в», в данном случае top = 4, потому что последнее число в 5 и имеет индекс 4.

Что это делаетназначить содержимое S[top] на data, затем присвоить Integer.MIN_VALUE на S[top] для его «очистки», а затем уменьшить top на 1.

Эта строка: S[top--] = Integer.MIN_VALUE; может быть переписанаследующим образом:

S[top] = Integer.MIN_VALUE; top = top - 1;

Я думаю, что конечной целью является очистка старых значений в стеке и присвоение им значений по умолчанию без изменения размера массива.

После того, как метод pop был выполнен, вот результат: S: [ 1, 2, 3, 4, -2147483648 ] и top: 3 и последний элемент в стеке будет 4.

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...