美文网首页
选出两个有序链表中的(交集)相等元素(C++)

选出两个有序链表中的(交集)相等元素(C++)

作者: 残剑天下论 | 来源:发表于2019-12-15 15:59 被阅读0次
#include <iostream>
using namespace std;
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x): val(x), next(NULL){}
};

void My_Printf(ListNode* L)
{
    cout << "List is: ";
    ListNode* cur = L;
    while (cur)
    {
        cout << cur->val << "->";
        cur = cur->next;
    }
    cout << endl;
}

ListNode* Intersection(ListNode* head1, ListNode* head2)
{
    ListNode* dummyhead = new ListNode(0);
    ListNode *cur = dummyhead;
    cur->next = head1;
    
    while (head1 && head2)
    {
        if (head1->val == head2->val)
        {
            cur = cur->next;
            head1 = head1->next;
            head2 = head2->next;
        }
        else if (head1->val < head2->val)
        {
            cur->next = head1->next;
            delete head1;
            head1 = cur->next;
        }
        else
        {
            head2 = head2->next;
        }
        
    }
    
    if (head1)
    {
        cur->next = NULL;
    }
    
    return dummyhead->next;
}

int main()
{
    ListNode* n1 = new ListNode(5);
    ListNode* n2 = new ListNode(15);
    ListNode* n3 = new ListNode(20);
    ListNode* n4 = new ListNode(35);
    ListNode* n5 = new ListNode(45);
    ListNode* n6 = new ListNode(50);
    
    ListNode* m1 = new ListNode(15);
    ListNode* m2 = new ListNode(35);
    ListNode* m3 = new ListNode(50);
    ListNode* m4 = new ListNode(55);
    
    n1->next = n2;
    n2->next = n3;
    n3->next = n4;
    n4->next = n5;
    n5->next = n6;
    
    m1->next = m2;
    m2->next = m3;
    m3->next = m4;
    
    My_Printf(n1);
    My_Printf(m1);
    ListNode* node = Intersection(n1, m1);
    My_Printf(node);
}

相关文章

  • leetcode linked list

    21. 合并两个有序链表 83. 删除排序链表中的重复元素 21. 合并两个有序链表 160. 相交链表 第三个想...

  • 0021-合并两个有序链表

    合并两个有序链表 方案一 具体思想就是新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中,由于两个...

  • 0021-合并两个有序链表

    合并两个有序链表 方案一 具体思想就是新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中,由于两个...

  • 合并两个有序链表

    算法(algorithm) 归并排序的最后一个步骤, 将两个有序的链表合并成一个有序链表。从每个链表中取出一个元素...

  • 数据结构的抽象数据类型描述

    数组: 有序的元素序列,将有限个元素按顺序排列的集合。 链表:有序的元素序列,但不同于数组,链表在内存中不是连续存...

  • javaScript的数据结构与算法(二)——链表

    1、链表 链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本事的...

  • 牛客网高频算法题系列-BM15-删除有序链表中重复的元素-I

    牛客网高频算法题系列-BM15-删除有序链表中重复的元素-I 题目描述 删除给出链表中的重复元素(链表中元素从小到...

  • 算法---链接两个有序链表

    给定两个有序链表,链接他们,元素从小到大排列

  • 两个递增链表的交集

    已知两个链表A和B分别表示两个集合.其元素递增排列. 设计一个算法,用于求出A与B的交集,并存储在A链表中; 示例...

  • 【算法题】2.求两个链表的交集

    题目 已知两个链表A和B分别表示两个集合.其元素递增排列。设计一个算法,用于求出A与B的交集,并存储在A链表中。 ...

网友评论

      本文标题:选出两个有序链表中的(交集)相等元素(C++)

      本文链接:https://www.haomeiwen.com/subject/tiddnctx.html