Код: Выделить всё
struct ExampleObject{
string name;
int somethingElse;
};
struct Node{
ExampleObject exampleObject;
Node* next;
};
Теперь я хочу объединить эти два списка в статический массив (зная, что в обоих списках никогда не будет более 1000 элементов), по-прежнему отсортированный по имени. Дело в том, что я заранее не знаю, сколько элементов в списках, и они могут быть разного размера.
Я подумал о чем-то вроде этого: начать перебирать списки, узел за узлом, и сравнивать их с найдите меньшее значение и вставьте его в массив. Как только один из списков достигает конца, я продолжаю перебирать другой, вставляя каждый элемент в массив.
Это мой код, но я его чувствую содержит много повторяющихся инструкций и, возможно, есть лучший способ решить эту проблему:
Код: Выделить всё
ExampleObject staticArray[1000];
int i=0;
while ((i!=1000) and (head1!=nullptr) and (head2!=nullptr)){
if (head1->exampleObject.name < head2->exampleObject.name){
staticArray[i]=head1->exampleObject;
head1=head1->next;
}
else{
staticArray[i]=head2->exampleObject;
head2=head2->next;
}
i++;
}
if (head1==nullptr)
while ((head2!=nullptr) and (i!=1000)){
staticArray[i]=head2->exampleObject;
head2=head2->next;
i++;
}
else
if (head2==nullptr)
while ((head1!=nullptr) and (i!=1000)){
staticArray[i]=head1->exampleObject;
head1=head1->next;
i++;
}
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/404 ... t-size-and