C++ Pop函数与链表实现

C++ Pop函数与链表实现,c++,linked-list,implementation,C++,Linked List,Implementation,好了,伙计们,我很清楚pop函数是如何工作的。我还知道我需要设置一个LinkNode*top=head,如果top==NULL,则需要返回NULL。我只是不知道在那之后我该怎么做。返回应该是删除并返回一个值,函数的数据类型是指针 我不会在这里发布我的代码,除非人们真的愿意帮助我,因为我已经被批评过一次,这很令人沮丧\ “我…知道我需要设置一个LinkNode*top=head,如果top==NULL,则需要 返回NULL。我只是不确定在那之后我该怎么做。” 嗯,你提到的事情与pop无关 对于链接

好了,伙计们,我很清楚pop函数是如何工作的。我还知道我需要设置一个LinkNode*top=head,如果top==NULL,则需要返回NULL。我只是不知道在那之后我该怎么做。返回应该是删除并返回一个值,函数的数据类型是指针

我不会在这里发布我的代码,除非人们真的愿意帮助我,因为我已经被批评过一次,这很令人沮丧\

“我…知道我需要设置一个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;
}
void pop( Node*& first )
{
    delete unlinked( first );
}
double pop( Node*& first )
{
    std::unique_ptr<Node> p( unlinked( first ) );
    return p->value;
}
然后,作为示例,破坏节点的
pop
如下所示:

struct Node
{
    Node*     next;
    double    value;
};

Node* unlinked( Node*& p )
{
    Node* const    result = p;

    p = p->next;
    return result;
}
void pop( Node*& first )
{
    delete unlinked( first );
}
double pop( Node*& first )
{
    std::unique_ptr<Node> p( unlinked( first ) );
    return p->value;
}
而返回节点中的值的
pop
如下所示:

struct Node
{
    Node*     next;
    double    value;
};

Node* unlinked( Node*& p )
{
    Node* const    result = p;

    p = p->next;
    return result;
}
void pop( Node*& first )
{
    delete unlinked( first );
}
double pop( Node*& first )
{
    std::unique_ptr<Node> p( unlinked( first ) );
    return p->value;
}
double-pop(节点*&第一个)
{
std::unique_ptr p(未链接(第一));
返回p->value;
}
这里的一个微妙之处是,是否保证在销毁节点之前复制该值。我只是假设是这样。我把这件事交给律师去解决


干杯&hth.

你用的是什么语言?C++?是的。谢谢你提前帮助我。MarlonMay,我问你为什么在C++中做手动链表工作?我猜是C++数据结构类。@ BuluCcor,它也更好地发布代码。诚然,一些回答者可以提高他们的社交技能,但他们通常都是彻底的、善意的。