Pop函数和链表的实现



好了,我显然知道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 .

相关内容

  • 没有找到相关文章

最新更新