Итак, у меня есть два связанных списка, каждый из которых содержит цвет:
1.черный-> 2.черный-> 3.черный-> 4.черный-> 5.черный-> NULL
1.red -> 2.red -> 3.red -> 4.red -> 5.red -> NULL
Я хочу, чтобы функция возвращала
1.черный-> 2.red -> 3.black-> 4.red -> 5.black-> NULL
1.red -> 2.black-> 3. красный -> 4.black-> 5.red -> NULL.
Позволяет назвать первые указатели, firstBlack и firstRed. Чтобы добиться этого паттерна «шахматной доски», я переключаю узлы, на которые каждый сначала указывает, простым переключением на другой список, перемещаю указатель на две точки, затем повторяюсь, пока я не нахожусь в конце списка.
while(firstBlack->next != NULL && firstRed->next != NULL) {
Node * temp = firstBlack->next;
firstBlack->next = firstRed->next;
firstRed->next = temp;
firstBlack = firstBlack->next->next;
firstRed = firstRed->next->next;
}
Однако эта функция не выполняет то, что должна, хотя я вполне уверен, что мои логики c верны. Я также получаю ошибки сегмента: (