(第二学期C+;+;)(家庭作业)链表建议 我目前正在编写一个C++程序,它使用链表。问题是,我似乎真的不知道如何使用链表。不过我知道(一点)如何使用类

(第二学期C+;+;)(家庭作业)链表建议 我目前正在编写一个C++程序,它使用链表。问题是,我似乎真的不知道如何使用链表。不过我知道(一点)如何使用类,c++,singly-linked-list,C++,Singly Linked List,这是老师给出的LinkedList.h文件(因此我不能修改任何内容) LinkedList.h struct Node { void* data_; Node* next_; Node() { data_ = 0; next_ = 0; } }; class LinkedList { private: Node* first_; Node* last_; long listLen_; publi

这是老师给出的LinkedList.h文件(因此我不能修改任何内容)

LinkedList.h

struct Node
{
    void* data_;
    Node* next_;

    Node()
    {
        data_ = 0;
        next_ = 0;
    }
};

class LinkedList
{
private:
    Node* first_;
    Node* last_;
    long listLen_;

public:
    LinkedList();
    ~LinkedList();
    void AddLinkToBack(void* ptr);
    void* RemoveLinkFromFront();
    Node* GetFirstNode();
    long GetListLength();
};
我真的只需要关于如何处理链表函数定义的建议,但我也会听取关于改进代码的建议。谢谢:)


编辑:删除了其他代码,以防将来的课程中有人偶然发现这篇文章。

我将描述如何实现每个函数。不会给你密码的

LinkedList()
:这是链接列表的构造函数。此函数应该是定义了链表的类的一部分。每当初始化链表时,就会调用它。可以使用它定义链表的第一个节点并将其设置为NULL

~LinkedList()
:这是链接列表的析构函数。它将释放分配给链表的所有内存。实现它时,它会为链表的所有元素释放内存,而不仅仅是将第一个元素设置为NULL

AddLinkToBack(void*ptr)
:在链接列表的末尾添加一个元素。这将遍历到链表的末尾,并将最后一个元素的下一个指针设置为参数中传递的指针。在执行此操作之前,还应该取消对void指针的引用

RemoveLinkFromFront()
:删除第一个元素。为此,您可以将列表的第一个元素设置为first->next,然后取消分配给第一个元素的内存

GetFirstElement()
:返回指向链接列表第一个元素的指针


GetListLength()
:遍历整个列表,并在旁边保留一个指针,每次移动到下一个元素时指针都会递增。到达链表末尾时返回计数器。

什么是链表函数定义的建议?您想知道如何实现它们吗?或者什么?是的,我根本不知道如何实现它们。上周我生病了,当时他们在课堂上检查了它=/
void*
?有一种特殊的坏代码只有学者才能编写。从文本中可以看出:“使用了一个空指针,这样这个类就不必知道Shell类了。”@Beta默认的复制构造函数和赋值运算符在这里造成了真正的问题。方法中的第一个大写字母看起来像C♯.使用在构造函数中初始化为零并由其他函数递增/递减的计数器跟踪列表长度将是实现
GetListLength
的更有效的方法。不需要遍历列表来计算节点数。同样,您可以跟踪指向最后一个元素的指针,以便以更高效的方式执行
AddLinkToBack
函数。