был задан следующий вопрос:
мне была предоставлена эта функция:
I Я пишу программу, чтобы найти пересечение двух связанных списков, однако, некоторые контрольные примеры не дают правильный вывод. Вот несколько примеров:
Первый список: 10 20 40 50
Второй список: 15 40
Вывод: Нет пересечений
Первый список: 1 2 3 4 6
Второй список: 2 4 6 8
Выход: 2 4 6
void rev(Node **head) *// reversing the final linked list after the insertions*
{
Node *cur =* head,*prev =NULL,*next;
while(cur)
{
next=cur->next;
cur->next=prev ;
prev=cur;
cur=next;
}
*head=prev;
}
void pushnode(Node **head , int data) *// adding a node in the front*
{
Node * newn= new Node(data);
newn->next=*head;
*head=newn;
}
*// FUNCTION*
void intersection(Node **head1, Node **head2,Node **head3)
{
Node *temp1= *head1,*temp2=*head2;
while(temp1&&temp2)
{
if(temp1->val==temp2->val)
{
pushnode(head3,temp1->val);
temp1=temp1->next;
temp2=temp2->next ;
}
else if(temp1->val>temp2->val)
temp2=temp2->next;
else
temp1=temp1->next;
}
rev(head3);
}