【问题标题】:Pop function and linked list implementation [closed]弹出功能和链表实现
【发布时间】:2011-09-25 05:07:15
【问题描述】:

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

除非人们真诚地帮助我,否则我不会在这里发布我的代码,因为我已经受到过一次严厉的批评,这非常令人沮丧。 :\

【问题讨论】:

  • 您使用什么语言? C++?
  • 是的。感谢您提前帮助我@Marlon
  • 请问您为什么要在 C++ 中进行手动链表工作?那将是纯 C 的东西。
  • @MichaelDorgan 我猜是 C++ 数据结构类。
  • @BleuCheese 贴代码也比较好。诚然,一些回答者可以提高他们的社交技巧,但他们仍然通常是彻底的、刻薄的。

标签: c++ linked-list implementation


【解决方案1】:

“我……知道我需要设置一个 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。

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多