如何实现两个成员函数(push_front 和析构函数)?

我正在尝试实现两个成员函数,即 push_frontdestructor。我已经编写了 push_front 函数的代码。但我似乎,我在任何地方都做错了。我该如何解决这个问题?如何在 Linked-List 前正确插入节点?

template <typename T>
class Node {
public:
    Node():next_p_{nullptr} {}
    Node(T v,Node* n):data_{v},next_p_{n} {}
   ~Node() {};

    void     setData( T &v ) { data_ = v; }
    const T &getData() const { return data_; }
    void  setNext( Node *n ) { next_p_ = n; }
    Node *getNext() const { return next_p_; }

private:
  T data_;
  Node *next_p_;
};

template <typename T>
class LinkedList {
private:
  Node<T> *head_ptr_;
public:
    LinkedList():head_ptr_{nullptr} {}
   ~LinkedList() {
    }

    // Insert at the front of the linked list (UPDATED)
    void push_front( T v ){
        Node *new_node = new Node;
        new_node->setNext(*head_ptr_) = v;
        new_node->next_p_ = this->head_ptr_;
        this->head_ptr_ = new_node;
    }
};
linnil22 回答:如何实现两个成员函数(push_front 和析构函数)?

第一个 Node 构造函数接受值和下一个指针,使用它一步创建新节点。

在将 head_ptr_ 用作下一个指针时,不应取消引用它。它已经是一个 Node*,它是 head_ptr_ 的正确类型。

    void push_front( T v ){
        Node *new_node = new Node(v,head_ptr_);
        this->head_ptr_ = new_node;
    }
,

我还建议不要处理手动内存管理,而是使用智能指针来简化您的生活。

使用 'body' => json_encode($invoice) ,您无需处理从免费存储中回收分配的内存。

这种方法的一个警告是,您无法复制 std::unique_ptr,但通常这就是您想要的。

List
本文链接:https://www.f2er.com/6068.html

大家都在问