Я пытаюсь написать функцию, которая объединит 2 связанных списка и возвратит объединенный список. Я сделал это, но мне пришлось использовать lastPtr
. Проблема заключалась в том, что последняя итерация цикла while создает на один узел больше, чем необходимо. Так что вопрос в том, как я могу удалить ненужные lastPtr
?
Есть код:
NodePtr merge(NodePtr s1, NodePtr s2)
{
NodePtr s3, currPtr, lastPtr;
s3 = malloc(sizeof(Node));
currPtr = s3;
while(s1 != NULL){
currPtr->ch = s1->ch;
currPtr->nextPtr = malloc(sizeof(Node));
currPtr = currPtr->nextPtr;
s1 = s1->nextPtr;
}
while(s2 != NULL){
lastPtr = currPtr;
currPtr->ch = s2->ch;
currPtr->nextPtr = malloc(sizeof(Node));
currPtr = currPtr->nextPtr;
s2 = s2->nextPtr;
}
lastPtr->nextPtr = NULL;
return s3;
}