Pop功能和链表实现

时间:2011-09-25 05:07:16

标签: c++ linked-list implementation pop

好吧,伙计们,所以我知道pop功能是如何工作的。我也知道我需要设置一个LinkNode * top = head,如果top == NULL,你需要返回NULL。我只是不确定我之后应该做些什么。返回应该删除并返回一个值,函数的数据类型是一个指针。

我不打算在这里发布我的代码,除非人们老老实实地帮助我,因为我已经被批评过一次而且非常令人沮丧。 :\

1 个答案:

答案 0 :(得分:1)

  

“我...知道我需要设置一个LinkNode * top = head,如果你需要top == NULL   返回NULL。我只是不确定在那之后我应该做什么。“

嗯,你提到的事情与pop无关。

对于链接列表,pop是关于取消第一个节点的链接。根据抽象级别,函数可能返回(指向)该节点或节点的“值”,或者什么也不返回。在最低抽象级别,您只需要unlink功能,可以这样:

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;
}

这里的一个细微之处在于是否保证在销毁节点之前复制该值。我只是假设它是。我把它留给律师来找到这方面的标准。

干杯&amp;第h