差集运算(线性表)

2020年1月17日 1404点热度 0人点赞 0条评论

差集运算(线性表)

时间: 1ms        内存:128M

描述:

线性表)已知递增有序的单链表A,B分别存储了一个集合,请编程以求出两个集合A和B 的差集(即由在A中出现且在B中不出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
#include<iostream>
using namespace std;
#define NULL 0      
int i,len,j,n,m;
struct linklist     //定义结构体
{
    int num;
    linklist *next;
};
linklist *creat()    //尾插法建立链表
{   int x;
   cin>>m;
   linklist *p1,*head,*p2;//p1用于指向新建立的结点,p2指向尾结点
   p1=new linklist;
   for(x=1;x<=m;x++)
    {
        cin>>p1->num;
        if(x==1) head=p1;
        p2=p1;      
        p1=new linklist;
        p2->next=p1;
        if(x==m) p2->next=NULL;
    }
      return head;
}
void build_print_linklist(linklist *a,linklist *b)  //两条链表取差集的函数
{
    linklist *p1,*p2,*head,*p,*c,*p3;
    p1=a;p2=b;
    int m=0,n=0;
    while(p1!=NULL)        //遍历p1
    {
        n=0;p2=b;            
        while(p2!=NULL)     //移动p2,寻找在p1中出现却不在p2中出现的值
        {
            if(p2->num==p1->num) n=1;  //有相等的值,记录n=1
            p2=p2->next;
        }
          if(n==0)
            {
               /******************/
                添加代码
              /******************/
                if(m==1) c=p,p3=p;    //差集存放才c中
                else
               {
                p3->next=p;
                p3=p;
                }
            }
        p1=p1->next;
    }
    p3->next=NULL;
    n=0;
    while(c!=NULL)         //输出差集
    {
        n++;
        cout<<c->num<<" ";
        c=c->next;
    }
    cout<<endl;
    cout<<n<<endl;
}
void destroy(struct linklist *head)
{
 struct linklist *p;
 while(head!=NULL)
 {
  p=head->next;
  delete(head);
  head=p;
 }
}
int main()
{
    linklist *heada,*headb;//建立两条链表,由build_print_linklist函数执行A-B并输出
    heada=creat();
    headb=creat();
    build_print_linklist(heada,headb);
 destroy(heada);
    destroy(headb);
    return 0;
}

输入:

一个整数m,表示A链表的长度m。

m个数表示A链表中的m个数据元素。

一个整数n,表示B链表的长度n。

n个数表示B链表中的n个数据元素。

输出:

A-B链表

元素个数

示例输入:

7
13 42 35 56 7 11 14
6
21 17 90 23 13 42

示例输出:

35 56 7 11 14 
5

提示:

参考答案:

解锁文章

没有看到答案?微信扫描二维码可免费解锁文章

微信扫描二维码解锁

使用微信扫描二维码打开广告页面后可以立即关闭,再刷新此页面即可正常浏览此文章

所跳转广告均由第三方提供,并不代表本站观点!

已经扫描此二维码?点此立即跳转

code

这个人很懒,什么都没留下

文章评论