(第二学期C ++)(家庭作业)链接列表建议

时间:2015-02-16 05:59:19

标签: c++ singly-linked-list

我目前正在编写一个使用链表的C ++程序。问题是,我似乎无法弄清楚如何使用链表。我知道(一点点)如何使用类。

这是老师给出的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();
};

我真的只需要知道如何处理链接列表函数定义,但我也会听取有关改进代码的建议。谢谢:))

修改:删除其他代码,以防将来某个人偶然发现此帖子。

1 个答案:

答案 0 :(得分:1)

我将描述如何实现每个功能。不会给你代码。

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

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

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

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

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

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