精华内容
下载资源
问答
  • 利用顺序表求交集

    2018-06-24 15:15:12
    } int main(){ list a; list b; list c; int x=100,y=100,i=1,j=1; int k=1; cout请输入A集合中的数,以数字0结束:"; while(1){ cin>>x; if(x==0) break; a.insert(i,x); i++; cout;...}
  • 两个顺序表求交集-----优化算法

    千次阅读 2019-03-07 18:10:14
    //解题关键:有序数组,两个指针分别指向数组第一个元素,比较,相等的存入新中 #include <iostream> #include<math.h> #include<stdlib.h> using namespace std; ...

    2.11

    //版权所有贾涛

    //解题关键:有序数组,两个指针分别指向数组第一个元素,比较,相等的存入新表中

    #include <iostream>
    #include<math.h>
    #include<stdlib.h>
    using namespace std;
    class  List{
        int Maxsize,last;                            //last�Ƕ�̬�������һ��Ԫ�ص�λ�ã�λ�ô�0��
        int *data;
    public:List(int size){Maxsize=size;              //���캯��
            last=-1;
            data=new int[Maxsize];
        }
        /*List(List& a){
            Maxsize=a.Maxsize;
            last=a.last;
            for(int i=0;i<=last;i++){
                data[i]=a.data[i];
            }
        }*/
        void input(){                                   //���뺯��
            while(1){
                cout<<"���������һ��Ԫ�ص�λ�ã���һ��λ����0��"<<endl;
                cin>>last;
                if(last<=Maxsize) break;
            }
            cout<<"����������Ԫ�أ�"<<endl;
            for(int i=0;i<=last;i++){
                cin>>data[i];
            }
        }
        void output(){                          //�������
            cout<<"������ս����"<<endl;
            for(int i=0;i<last;i++){
                cout<<data[i]<<" ";
            }
            cout<<data[last]<<endl;
        }
        void intersection(List& a,List& b) {            //�?�
            int n1=a.last+1;
            int n2=b.last+1;
            int i=0,j=0;
            last=-1;
            while(i<n1&&j<n2){
                if(a.data[i]<b.data[j]){
                    i++;
                }
                else if(a.data[i]>b.data[j]){
                    j++;
                }
                else{
                    last++;
                    data[last]=a.data[i];
                    i++;   j++;
                }
            }
        }
    };
    int main(){
        List a(1000),b(1000),c(1000);
        cout<<"�������Ա�a��Ԫ��"<<endl;
        a.input();
        cout<<"�������Ա�b��Ԫ��"<<endl;
        b.input();
        c.intersection(a,b);
        cout<<"����µ����Ա�"<<endl;
        c.output();
        return 0;
    }
    展开全文
  • C 顺序表求交集和并集

    千次阅读 2016-12-22 01:36:05
    c语言,交集,并集,顺序表,线性表
    #include<stdio.h>
    
    #include<stdlib.h>
    typedef struct {
        int *array;//线性表记录数据
        int length;
    }List;
    int isExist(List src, int tmp)
    {
        int i = 0;
        while (i < src.length)
        {
            if (src.array[i] == tmp)
                break;
            i++;
        }
        if (i == src.length)
            return 0;    //不存在
        return 1;  //存在
    }

    List unionList(List src1, List src2)
    {
        List des;
        int i;
        des.array = (int *)malloc(sizeof(int)*(src1.length + src2.length));
        des.length = 0;
        for (i = 0;i < src1.length;++i) //将src1中的数据加到输出集合中
        {
            if (!isExist(des, src1.array[i]))
            {
                des.array[des.length] = src1.array[i];
                des.length++;
            }
        }
        for (i = 0;i < src2.length;++i) //将src2中的数据加到输出集合中,没有写到一起,上下基本一样,方便记忆
        {
            if (!isExist(des, src2.array[i]))
            {
                des.array[des.length] = src2.array[i];
                des.length++;
            }
        }
        return des;//返回并集
    }

    List sectionList(List src1, List src2)
    {
        List des;
        int i;
        int len = src1.length < src2.length ? src1.length : src2.length;  //去两个集合中较大的集合的个数,因为是交集
        //可以直接改成  int len = src1.length;  这样简单方便记忆
        des.array = (int *)malloc(sizeof(int)*(len));
        des.length = 0;
        for (i = 0;i < src2.length;i++) //将src1和src2的交集输出到des中,没有优化,可以根据大小,减少循环次数
        {
            if (isExist(src1, src2.array[i]) && !isExist(des, src2.array[i]))  //src2中的元素存在于src1中,但是不存在des中
            {
                des.array[des.length] = src2.array[i];    //符合条件加入des
                des.length++;
            }
        }
        return des;//返回并集
    }
    //上面函数中的src1,src2,des相当于  集合A,B,C  
    //并集   C = A v B  ,C的最大长度   = A的长度 + B 的长度
    //交集   C = A ^ B ,C的最大长度 = A 与 B 中较小的那一个
    int main()
    {
        
        List A,B;
        int i;   //i没有写到for循环中,怕老版本编译器不兼容
        int a[7] = { 1,2,6,7,8,9,10 };
        int b[6] = { 2,3,6,8,10,12 };
        A.array = a;
        A.length = 7;
        B.array = b;
        B.length = 6;
        List x = unionList(A, B);
        List y = sectionList(A, B);
        printf("A,B 并集:\n");
        for (i = 0;i < x.length;i++)
            printf("%d\t", x.array[i]);
        printf("\n\n\nA,B交集:\n");
        for (i = 0;i < y.length;i++)
            printf("%d\t", y.array[i]);
        printf("\n");

        system("pause");
        return 0;
    }
    展开全文
  • 两个顺序表交集

    2021-03-19 19:29:11
    两个顺序表交集,循环遍历即可 void IntersectionSqList(SqList &L1,SqList &L2,SqList &L3){ int k=0; for(int i=0;i<L1.length;i++){//遍历L1 for(int j=0;j<L2.length;j++){//遍历L2 ...

    求两个顺序表的交集,循环遍历即可

    void IntersectionSqList(SqList &L1,SqList &L2,SqList &L3){
        int k=0;
        for(int i=0;i<L1.length;i++){//遍历L1
            for(int j=0;j<L2.length;j++){//遍历L2
                if(L1.data[i]==L2.data[j]){//寻找L2中与目前L1中是否元素值相等的元素
                    L3.data[k]=L1.data[i];
                    k++;
                }
            }
        }
        L3.length=k;
    }
    
    #include <stdio.h>
    #include "SqList.cpp"
    
    int main()
    {
        ElemType e;
        SqList L1;
        InitSqlList(L1);
        xhfz(L1);//只循环键盘写入了5个数据
        printf("----L1----\n");
        PrintSqList(L1);
    
        SqList L2;
        InitSqlList(L2);
        xhfz(L2);//只循环键盘写入了5个数据
        printf("----L2----\n");
        PrintSqList(L2);
    
        SqList L3;
        InitSqlList(L3);
        IntersectionSqList(L1,L2,L3);
        printf("----L3----\n");
        PrintSqList(L3);
    
    
        return 0;
    }
    
    

    在这里插入图片描述

    展开全文
  • 顺序表交集、并集

    千次阅读 2020-07-13 23:13:59
    顺序表交集、并集操作 (顺序表存储结构如下) #define INIT_LIST_SIZE 20 //线性表大小 #define LISTCREAMENT 10 //若原来空间不够用,增加的长度 #pragma warning(disable:4996)//加上这个后VS2019可以用...

    求两顺序表的交集、并集操作
    (顺序表存储结构如下)

    #define INIT_LIST_SIZE  20  //线性表大小
    #define LISTCREAMENT 10    //若原来空间不够用,增加的长度
    #pragma warning(disable:4996)//加上这个后VS2019可以用scanf与printf等
    typedef int ElemType;
    typedef struct {      //定义顺序表存储结构
    	ElemType* elem;      //储存数据元素,它的存储位置就是存储空间的存储位置
    	int length;      //线性表当前长度
    	int listsize;    //线性表最大存储容量
    }SqList;
    
    

    1.求L1与L2的交集,放入L3中

    //求L1与L2的交集,放入L3
    void BothList(SqList L1, SqList L2, SqList& L3)
    {//L3开始为空表
    	ElemType* p1, * p2, * p3;
    	p1 = L1.elem, p2 = L2.elem, p3 = L3.elem;
    	while (p1 <= L1.elem + L1.length - 1 && p2 <= L2.elem + L2.length - 1)
    	{
    		if (*p1 < *p2)//当前p1所指元素小于p2,p1指针后移
    		{
    			p1++;
    		}
    		else if (*p2 < *p1)
    		{
    			p2++;
    		}
    		else
    		{
    			*p3 = *p1;//赋值给p3
    			L3.length++;//L3当前长度加一
    			p1++;//p1指针后移
    			p2++;//p2指针后移
    			p3++;
    		}
    	}
    	if (L3.length > L3.listsize) exit(0);
    }
    
    

    2.求L1与L2并集

    //L1与L2并集,放入L3
    void BothListb(SqList L1, SqList L2, SqList& L3)
    {
    	ElemType* p1, * p2, * p3;
    	p1 = L1.elem, p2 = L2.elem, p3 = L3.elem;
    	while (p1 <= L1.elem + L1.length - 1 && p2 <= L2.elem + L2.length - 1)//L1,L2均不为空
    	{
    		if (*p1 <= *p2)//p1当前所指元素小于p2
    		{
    			*p3 = *p1;//p1赋值给p3
    			p3++;//p3指针后移
    			L3.length++;//p3表当前长度加一
    			p1++;//p1指针后移
    		}
    		else
    		{
    			*p3 = *p2;
    			p3++;
    			L3.length++;
    			p2++;
    		}
    	}
    	while (p1<=L1.elem+L1.length-1)//L2为空L1不为空时
    	{
    		*p3 = *p1;
    		p3++;
    		L3.length++;
    		p1++;
    	}
    	while (p2 <= L2.elem + L2.length - 1)
    	{
    		*p3 = *p2;
    		p3++;
    		L3.length++;
    		p2++;
    	}
    	if (L3.length > L3.listsize) exit(0);
    }
    
    展开全文
  • 顺序表求并集和交集,用C++实现的,定义了一个顺序表的类。
  • 顺序表--找交集

    2020-04-01 16:28:49
    现要求另辟空间构成一个顺序表 C,其元素为 A 和 B 元素的交集,且表 C 中的元素也是依值递增有序排列。 #include<stdio.h> #include<stdlib.h> #define int ElemType #define INIT_LIST_SIZE 6 #...
  • 顺序表实现集合的交并补基本操作 垃圾本科生刚开始学数据结构 记录一下平时实验作业 对于集合的并集实现基本思路:在顺序表A,B均没有遍历完时:利用循环先遍历顺序表A中数据,若比B中数据小,则A中数据指向下一个,并...
  • 顺序表 AB取交集

    2019-03-26 13:16:43
    数据结构中的 顺序表 AB取交集。亲测可以。
  • 顺序表实现并集、交集运算并集:C=A∪B求交集:C=A∩B 并集:C=A∪B 算法: void Union(ListPtr a,ListPtr b,ListPtr c) { int alen=a->length,blen=b->length; int k=alen; for(int i=0;i<alen;i+...
  • 顺序表交集与差集

    2018-10-18 22:08:37
    顺序表的差集与交集 #include &lt;iostream&gt; using namespace std; const int MaxSize=100; //顺序表的大小 template &lt;typename T&gt; class SqList; template &lt;typename T&gt...
  • 对两个有序顺序表求有序的交集

    千次阅读 2018-11-01 17:18:52
    #include &lt;stdio.h&gt; /* 题目:数据结构题集18页25题 假设以2个元素依值递增有序排列的线性表A和B分别表示2个集合(即...试对顺序表编写表C的算法。 */ #define maxlen 50 #define DATATYPE int t...
  •   (递增有序)顺序表表示集合A、B,实现以下操作:    C=A∩B,C=A∪B,C=A∖BC=A \cap B,C=A \cup B,C=A \setminus BC=A∩B,C=A∪B,C=A∖B A=A∩B,A=A∪B,A=A∖BA=A \cap B,A=A \cup B,A=A \...
  • #include<iostream> #include<malloc.h> #include<cstdio> using namespace std; typedef struct LNode{ int data; int sum = 0; struct LNode *next; }LNode,*List;...next .
  • C语言实现顺序表的并集与交集,程序内含详细的注释说明
  • 顺序表--两个集合的交集

    千次阅读 2019-08-08 19:52:40
    //求交集 void unionList(Sqlist *L1,Sqlist *L2,Sqlist *&L3) { int i,j = 0; int e; L3 = (Sqlist *)malloc(sizeof(Sqlist)); L3->data[0] = L1->data[0]; L3->length = 1; for( i=1; i<L1->length; i++) ...
  • 顺序表求集合的交集、并集和差集

    万次阅读 多人点赞 2015-09-26 19:07:13
    使用顺序表时, 需要定义一个数组来存储顺序表中的所有元素和定义一个整型变量来存储顺序表的长度。假定数组用data[MaxSize]表示,长度整型变量用length表示,并采用结构体类型表示,元素类型采用通用类型标识符...
  • 顺序表:两集合的交集

    千次阅读 2015-09-21 16:59:02
    【项目 - 集合并集】  假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,一个新的...
  • 顺序表交集并集

    2019-10-03 14:43:14
    顺序表完成交集并集 写的不是太好,有不足之处可以评论!! #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define List_Size 100 //定义长度为100 typedef struct { int *elem;//...
  • 1、顺序表排序(升序):冒泡排序。 (1)定义数组中需要比较的数据有n个,j=n-1,i=0; (2)从最后一个元素开始a[j]与其相邻的a[j-1]比较,若a[j-1]>a[j],则交换a[j-1]和a[n]的值; (3)在比较判断后,无论...
  • 【项目 - 集合并集】  假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,一个新的...
  • 两个链表求交集In computer science, a linked list is a linear collection of data elements, whose order is not given by their physical placement in memory. Instead, each element points to the next. It ...
  • 顺序表交集和并集

    2011-10-17 17:23:03
    是关于两个线性表的合并也就是并集 还有交集
  • /*初始化顺序表*/ Status InitList(SqList *&List) { List = new SqList; List->length = 0; return TRUE; } /*创建顺序表*/ Status CreateList(SqList *&List, ElemType e[], int len) { List = new SqList; for...
  •  printf("交集\n");  printf("请输入集合A,集合B元素的个数:\n");  scanf("%d %d", &La.length, &Lb.length);  printf("请输入集合A的元素:\n");  for (i = 0; i ; i++){  scanf("%d", &La.elem[i]...
  • 数据结构实践——顺序表 两集合的交集
  • //求交集 void Inter(SqList La, SqList Lb, SqList &Lc) { int i, j = 0; ElemType e; for (i = 1; i (La); i++) { GetElem_Sq(La, i, e); //取集合A中的元素 if (LocateElem_Sq(Lb, e)) //在集合B...
  • 顺序表交集

    2008-05-11 21:12:30
    本程序用C++实现了两个两个顺序表合并求交集后放在另一个顺序表中,本人在VC6.0下编译通过能完全运行。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,566
精华内容 18,626
关键字:

顺序表求交集