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

代码如下:

#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
请按任意键继续. . .
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值