Код для структур:
typedef struct nodo_int *lista_int;
struct nodo_int{
int info;
lista_int next;
}nodo_int;
Код для визуализации списков и их чередования в одном:
void visNode(int value){
printf("| %d |", value);
}
void visList(lista_int l){
if(l != NULL){
visNode(l->info);
visList(l->next);
}
}
lista_int alternateLists(lista_int l1, lista_int l2){
lista_int l3 = makesNode();
lista_int temp = l3, newNode = NULL;
if(l1 == NULL)
return l2;
else if(l2 == NULL)
return l1;
while(l1 != NULL && l2 != NULL){
newNode = makesNode();
newNode->info = l1->info;
temp->next = newNode;
temp = newNode;
l1 = l1->next;
newNode = makesNode();
newNode->info = l2->info;
temp->next = newNode;
temp = newNode;
l2 = l2->next;
printf("\n1\n");
}
return l3->next;
}
В основном:
int main(){
lista_int l1, l2;
l1 = generateList();
l2 = generateList();
printf("\nFirst list:\n");
visList(l1);
printf("\n\nSecond lists:\n");
visList(l2);
printf("\n\nNew list obtained from merging the other two:\n");
lista_int l3 = alternateLists(l1, l2);
visList(l3);
return 0;
}
Код делает то, что должен, но также добавляет много бесполезной памяти в третий список. Я также пробовал отладку, но это приводит к ложному срабатыванию.