«Я… знаю, что мне нужно установить LinkNode * top = head и что если top == NULL, то вам нужно вернуть NULL.Я просто не уверен, что я должен честно делать после этого. ”
Ну, вещи, о которых вы говорите, не имеют ничего общего с pop
.
Длясвязанный список, pop
о том, чтобы отсоединить первый узел.В зависимости от уровня абстракции функция может возвращать (указатель на) этот узел, или «значение» узла, или ничего.На самом низком уровне абстракции вы хотите только функциональность разъединения, которая может выглядеть следующим образом:
struct Node
{
Node* next;
double value;
};
Node* unlinked( Node*& p )
{
Node* const result = p;
p = p->next;
return result;
}
Тогда, например, pop
, который разрушает узел, выглядит так:
void pop( Node*& first )
{
delete unlinked( first );
}
, в то время как pop
, который возвращает значение в узле, выглядит следующим образом:
double pop( Node*& first )
{
std::unique_ptr<Node> p( unlinked( first ) );
return p->value;
}
Тонкий момент здесь заключается в том, гарантированно ли будет скопировано значение до уничтожения узла.Я просто предполагаю, что это так.Я оставляю это на усмотрение адвокатов, чтобы найти стандарт для этого.
Приветствия & hth.