C语言集合交并差运算(数据结构).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
— PAGE \* Arabic 1 — C语言集合交并差运算(数据结构) 辽宁工程技术大学 数据结构课程设计 集合的交运算问题 姓名:邵晓航 指导教师:吴德成 班级:理科实验11-2 2012年12月15日 集合交运算问题 1、问题描述 用链表表示两个简单集合,求两个集合的交,并做相关推广。 2、基本要求 1)集合元素限定为单字符型。 2)另外申请存储空间存放集合中相同的元素。 3)输入:在程序中定义,随机生成或键盘输入。 4)输出:两个集合及两个集合的交。 3、设计思路 设有集合A、B,A与B的交集为A∩B。A∩B指既属于集合A又属于集合B的元素。因为要求另外申请存储空间,可另找一个新的集合C,C中存储A和B共同的元素。问题即变为求:C=A∩B。 于是算法思想为:以A为标准,对B进行遍历,把B中和A相同的元素存储到C中。为方便操作,链表需要设置头结点。 具体过程如下: 1.扫描A,对A中每个元素执行2 2.在B中查找该元素 2.1 如果B中有,则保留到C中 2.1 否则,继续查找 3.显示C=A∩B 从以上过程可见,可以借助于链表的基本操作实现上述算法。 4、测试与运行(程序见附录) 从运行过程可以看出以下几点: A、B集合可以为数字、字母、字符,因为定义A、B集合为字符型 A、B集合中的元素都是简单的单字符 A、B集合遍历时,是反序输出的 在“请选择序号”如果选择“2”则跳出输入循环,结束 5、问题扩展(附录2) 上述程序设计可以解决两个简单单字符集合的交集问题,由此可发散求解两个集合的并集和差集。 求集合的并就是求A和B中所有的元素 求集合的差就是求A集合中减去同B集合相同元素的部分(假设A大于B) 我们先定义两个集合的并,设计思路如下: 1.把A中的元素全部放到一个集合C中 2.以A每一个元素为基准,对B进行循环 2.1 B中存在元素与该元素不同,则把该元素放到C中 2.2 B中存在元素与该元素相同,继续循环 3.显示C=A+B 我们定义两个集合的差,设计思路如下: 1.假定A大于B,计算C=A-B 2.以A每一个元素为基准,对B进行循环 2.1 B中元素都与该元素不同,则把该元素放到C中 2.2 B中存在元素与该元素相同,继续循环 3.显示C=A-B 6、反思与改进 从以上运行结果来看,该程序仅能处理单字符的简单集合。 因为在链表遍历时,程序是由后向前推移的。又因为集合中元素是字符型,所以元素“abc”会记录成“cba”,且元素的连贯性也会遭到破坏,如上图交集中出现两个“a”。 此时需要调整程序中的“输入集合函数”函数 7、附录1 #include typedef struct LNode//定义结构体类型指针 { char data; struct LNode*next; }*pointer; void readdata(pointer head)//定义输入集合函数 { pointer p; char tmp; scanf(%c, while(tmp!=\n) { p=(pointer)malloc(sizeof(struct LNode)); p-data=tmp; p-next=head-next; head-next=p; scanf(%c, } } void pop(pointer head)//定义输出集合函数 { pointer p; p=head-next; while(p!=NULL) { printf(%c,p-data); p=p-next; } printf(\n); } void or(pointer head1,pointer head2,pointer head3)//定义集合的交集函数{ pointer p1,p2,p3

文档评论(0)

泰和宸风 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体泰和宸风文化科技(青岛)有限公司
IP属地北京
统一社会信用代码/组织机构代码
91370211MA94GKPQ0J

1亿VIP精品文档

相关文档