完整的集合运算程序.doc.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
完整的集合运算程序.doc

目 录 一.设计题目 1 (一).题目:集合运算 1 (二).问题描述和分析 1 二.设计内容 2 (一). 数据结构设计 2 (二). 算法设计 2 三.概要设计 3 (一).程序结构图 3 (二).具体程序设计 3 四.算法分析 4 源代码 4 五.结果分析 15 六.心得体会 20 七.参考文献 21 八.课程设计评分表 22 一.设计题目 (一).题目:集合运算 功能:使用链表来表示集合,完成集合的合并,求交集等操作。 主要包含以下内容: 1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2.完成最低要求; 3.进一步要求; (二).问题描述和分析 本课程设计中,集合输入的形式为一个以“回车符”为标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤。输出的运算结果字符串中将不含重复字符或非法字符。 问题描述: 有两个集合A、B,要求它的交集、并集。用两个链表L1、L2存储集合A、B。描述该问题的存储结构,算法,并通过编写程序来实现。问题分析: 1. 定义一个链表来存储集合元素; 2. 链表L包括数据域和指针域,数据域中存储集合元素,指针域中存储下一个集合元素的位置; 3. 创建若干个基本函数,通过函数调用对链表进行作,实现集合的交、并运算。 .设计内容 (一). 数据结构设计 1. 数据结构设计考虑 创建三个带头结点的单链表,用来存储两个集合中的元素和最终的结果,为实现集合的交,并运算功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合。 2. 逻辑结构存储结构 逻辑结构: 创造一个带结点的单链表包括(头结点L,结点若干,尾结点) 单链表中每个结点包括(*next 表示指针data表示域) 算法设计 程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤输入中的非法字符)和运算结果显示在其后。 程序执行的命令包括: a) 构造集合A; b) 构造集合B; c) 求集; d) 求集; ) 结束。 “构造集合A”和“构造集合B”时,需以字符串的形式键入集合元素。 (二).具体程序设计 1.定义链表 typedef int ElemType; typedef struct Lnode 2.返回链表长度 3.返回指定节点的值 4.定位制定值的节点的值 5.显示链表 void display(struct Lnode **L) 6.创建链表,并设置链表为空 void creat(struct Lnode **L) 7.向链表中插入元素 void insert(struct Lnode **L,int n,ElemType x) 8.插在第n个节点的前面 9.删除指定位置的节点 10.初始化链表 void init(struct Lnode **L,int len) 11.复制链表L1到L2 void copy(struct Lnode **L1,struct Lnode **L2 ) 12.求交集 void intersection(struct Lnode **L1,struct Lnode **L2,struct Lnode **L3) 13.求并集 unionset(struct Lnode **L1,struct Lnode **L2,struct Lnode **L3) 14.把L1复制到L3,然后比较L2和L3,得到L2与L3中没有的元素,并插入 15.插在排序的位置上 insert(*L3,k,t2-data); 16.插在链尾 四.算法分析 源代码如下: #include stdio.h #include stdlib.h #include alloc.h #define null 0 #define M 100 typedef int ElemType; /*定义链表*/ typedef struct Lnode { ??? ElemType data; ??? struct Lnode *next; }; int lenth(struct Lnode **L) { ??? int n=0; ??? struct Lnode *t; ??? t=*L; ??? while(t!=null) ??????? { ?????????? n++; ?????????? t=t-next; ??????? } ??? return n; } ElemType get(struct Lnode **L,int n) {

文档评论(0)

aena45 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档