好了,我显然知道pop函数是如何工作的。我也知道,我需要设置一个LinkNode * top = head,如果top == NULL,你需要返回NULL。我只是不确定在那之后我该怎么做。return函数应该删除并返回一个值,函数的数据类型是指针。
我不打算把我的代码贴在这里,除非有人真诚地帮助我,因为我已经被批评了一次,这是相当令人沮丧的。:";我白马王子;知道我需要设置一个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 .