Найти пересечение двух отсортированных связанных списков - PullRequest
0 голосов
/ 23 апреля 2020

был задан следующий вопрос:


мне была предоставлена ​​эта функция:


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);

        }

...