在结构之间复制特定值

时间:2018-12-17 07:18:46

标签: c++ pointers data-structures struct singly-linked-list

使用C ++而不使用STL容器的功能,我试图以特定的方式将值从一个结构复制到另一个结构。

我有这样的结构(单链接列表),这就是我向其中添加新元素的方式:

struct Node {
    Node *next;
    std::string name;
    std::string surname;
};

void AddElement(Node *&head, const std::string &name, const std::string &surname)
{
    head = new Node {head, name, surname};
}

样品用量:

Node *pointer = nullptr; 
AddElement(pointer, "Alex", "Smith"); 
AddElement(pointer, "Robert", "Johnson"); 
AddElement(pointer, "George", "Smith"); 
AddElement(pointer, "Oscar", "Williams");

我还有另一个结构:

struct Result {
    Result *next;
    std::string surname;
};

我想将每个“姓氏”值从第一个“节点”列表复制到新的“结果”列表中,每个给定的“姓氏”值仅复制一次。

也就是说,如果我在“节点”链接列表中有这样的姓氏:"Smith", "Johnson", "Smith", "Johnson", "Williams",我想在我的“结果”列表中拥有"Smith", "Johnson", "Williams"

我是C ++的新手,指针和结构。我该如何处理?

1 个答案:

答案 0 :(得分:2)

在不更改基本结构定义的情况下,这是一种减少搜索的算法:

保留按字母顺序排序的“结果”结构列表。每当您检查姓氏时,都将搜索结果结构,直到您发现:(1)找到一个完全匹配的内容,因此不要添加它(2)按字母顺序查找要搜索的姓氏。在这种情况下,请将新姓氏直接添加到找到的姓氏之前。

这可能不是最佳解决方案,也不是唯一解决方案,但我以此为指导。