Изменить вершину стека без доступа к объекту StackType - PullRequest
0 голосов
/ 14 сентября 2011

У меня был определенный запрос относительно вопроса, который мне задавали ранее.

Мне дали прототип этой функции void StackPop(NodeType *Top), и мне сказали изменить вершину стека без доступа к объекту стека.StackPop функция здесь является глобальной функцией, а не функцией-членом класса Stack.После выталкивания Top должен указывать на новое значение элемента Top.

В качестве решения, выталкивание вершины стека в таком случае будет возможно только в том случае, если мы передадим адрес верхнего узла стека.к функции во время вызова.например: StackPop(&address); Чтобы изменить вершину стека

NodeType* temp;
temp = top;
*top = (*top)->next;
delete temp;

Это простой ответ на вопрос или же нужно заняться чем-то другим?

1 Ответ

0 голосов
/ 14 сентября 2011

Да, это верный простой ответ на вопрос с тремя оговорками:

  1. temp = top должно читаться как temp = *top;
  2. , которые вы, возможно, захотите изящно обработатьслучай, когда *top равен NULL (а не просто разыменовывается указатель NULL);
  3. это решение, конечно, несовместимо с прототипом, который вам был предоставлен [void StackPop(Node *Top)], так как он будет принимать Node** в качестве аргумента.

Единственное другое замечание, которое у меня есть, это то, что StackPop звучит так, как будто это должна быть функция-член, а не свободная функция.

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