使用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 ++的新手,指针和结构。我该如何处理?
答案 0 :(得分:2)
在不更改基本结构定义的情况下,这是一种减少搜索的算法:
保留按字母顺序排序的“结果”结构列表。每当您检查姓氏时,都将搜索结果结构,直到您发现:(1)找到一个完全匹配的内容,因此不要添加它(2)按字母顺序查找要搜索的姓氏。在这种情况下,请将新姓氏直接添加到找到的姓氏之前。
这可能不是最佳解决方案,也不是唯一解决方案,但我以此为指导。