欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Math Dash的求两个集合的交集,就是把两个集合的交集存放在第一个集合中的程序

程序员文章站 2024-02-04 08:18:16
...

代码如下:

#include <stdio.h>
#include <stdlib.h>
struct LNode
{
	int data;
	struct LNode *next;
};
struct LNode *a0()
{
	struct LNode *a;
	a=(struct LNode*)malloc(sizeof(struct LNode));//*分配内存
	a->next=NULL;
	return a;
}
struct LNode *a1(int i)
{
	int *b,c;
	b=(int*)malloc(i*sizeof(int));//*分配内存
	for(c=0;c<i;c++)
	{
		b[c]=rand()%10;//*为b[c]赋值
	}
	for(;;)
	{
		for(c=0;c<i-1;c++)
		{
			if(b[c]>b[c+1])//*如果一个数大于下一个数
			{
				int d;//*交换数
				d=b[c];
				b[c]=b[c+1];
				b[c+1]=d;
			}
			if(b[c]==b[c+1])//*如果一个数等于下一个数
			{
				int d;
				for(d=c;d<i;d++)//*删除
				{
					b[d]=b[d+1];
				}
				i--;
			}
		}
		for(c=0;c<i-1;c++)
		{
			if(b[c]>=b[c+1])//*如果有一个数大于等于下一个数
			{
				break;
			}
		}
		if(c==i-1)//*如果到达末尾
		{
			break;
		}
	}
	struct LNode *a,*e;//*创建一个链表
	a=a0();//*初始化
	e=a;
	for(c=0;c<i;c++)
	{
		struct LNode *d;
		d=(struct LNode*)malloc(sizeof(struct LNode));//*创建一个新结点
		d->data=b[c];//*为新结点的数据域赋值
		d->next=NULL;//*指针域指向空
		e->next=d;//*e指针域指向新结点
		e=d;//*因为e=e->next表示指向下一个结点,且e->next=d,所以e=d表示指向下一个结点
	}
	return a;
}
void jiance_datas(struct LNode *a,struct LNode *b)
{
	struct LNode *e,*f;
	e=a->next;
	f=b->next;
	struct LNode *h,*j;
	j=a0();
	h=j;
	while(e)
	{
		struct LNode *g;
		g=f;
		while(g)
		{
			if(e->data==g->data)
			{
				h->next=g;
				h=h->next;
			}
			g=g->next;
		}
		e=e->next;
	}
	h->next=NULL;
	struct LNode *i;
	i=a;
	while(i->next)
	{
		i=i->next;
	}
	i->next=j->next;
}
void jie_mian_system()
{
	char o[]="Math Dash的求两个集合的交集,就是把两个集合的交集存放在第一个集合中的程序";
	char p[strlen(o)+6];
	sprintf(p,"title %s",o);
	system(p);
	puts(o);
	srand((unsigned)time(NULL));
	struct LNode *a,*b;
	b=a1(10);//*创建一个集合
	a=b->next;
	while(a)
	{
		printf("%d\n",a->data);
		a=a->next;
	}
	printf("\n");
	struct LNode *c,*d;
	d=a1(7);
	c=d->next;
	while(c)
	{
		printf("%d\n",c->data);
		c=c->next;
	}
	printf("\n");
	jiance_datas(&(*b),&(*d));
	struct LNode *e;
	e=b->next;
	while(e)
	{
		printf("%d\n",e->data);
		e=e->next;
	}
	system("pause");
}
main()
{
	jie_mian_system();
	return 0;
}

程序运行如下:

Math Dash的求两个集合的交集,就是把两个集合的交集存放在第一个集合中的程序
0
2
3
4
7
9

0
1
4
6
8

0
2
3
4
7
9
0
4
6
8
请按任意键继续. . .