Копирование определенных значений между структурами - PullRequest
0 голосов
/ 17 декабря 2018

Используя 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 голосов
/ 17 декабря 2018

Вот возможный алгоритм сокращения поиска без изменения базовых определений структуры:

Сохраняйте свой список структур результатов отсортированным по алфавиту.Всякий раз, когда вы проверяете фамилию, ищите в структурах Результата, пока не выполните одно из следующих действий: (1) Найдите точное совпадение и не добавляйте его (2) Найдите фамилию в алфавитном порядке после той, которую вы ищете.В этом случае добавьте новую фамилию непосредственно перед найденной вами.

Возможно, это не лучшее или единственное решение, но я предлагаю его как направление.

...