栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构实验4下

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构实验4下

有两个存放整数的线性表A和B,链式存储,元素个数分别为m和n,表中元素单调递增。
求出A和B的差集A - B(由在A中出现而不在B中出现的元素所构成的集合)。
将差集保存在线性表A中,差集的元素保持原有的顺序。 

#include 
#include

struct List
{
	int data;
	struct List* next;
};

struct List* adddata(int e)
{
	struct List* t = (struct List*)malloc(sizeof(struct List));
	t->data = e;
	t->next = NULL;
	return t;
}

void diff(struct List* a, struct List* b)
{
	struct List* p1 = a;
	struct List* p2 = b;
	while (p1->next && p2->next)
	{
		if (p1->next->data < p2->next->data)
			p1 = p1->next;
		else if (p1->next->data > p2->next->data)
			p2 = p2->next;
		else
		{
			struct List* t = p1->next;
			p1->next = p1->next->next;
			free(t);
		}
	}
}

int main()
{
	struct List* a = adddata(0);
	struct List* b = adddata(0);
	struct List* p = a;
	for (int i = 0; i < 5; i++)
	{
		if (i == 0)
		{
			a->next = adddata(rand() % 5);
			p = a->next;
		}
		else
		{
			p->next = adddata(1 + rand() % 5 + p->data);
			p = p->next;
		}
	}
	for (int i = 0; i < 6; i++)
	{
		if (i == 0)
		{
			b->next = adddata(rand() % 5);
			p = b->next;
		}
		else
		{
			p->next = adddata(1 + rand() % 5 + p->data);
			p = p->next;
		}
	}
	diff(a, b);
	p = a->next;
	while (p)
	{
		printf("%d ", p->data);
		p = p->next;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号