- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用链表实现集交并补等运算
PAGE \* MERGEFORMAT1
数据结构定义
抽象数据类型
本设计中用到的数据结构ADT定义如下:
ADT List{
数据对象:D={}
数据关系:={}
基本操作:InitList(L)
操作结果:构造一个空的线性表L;
DestroyList(L)
初始条件:线性表L已存在
操作结果:销毁线性表L
ClearList(L)
初始条件:线性表L已存在
操作结果:将L重置为空表
ListEmpty(L)
初始条件:线性表L已存在
操作结果:若L为空表,则返回TRUE,否则返回FALSE
ListLenght(L)
初始条件:线性表L已存在
操作结果:返回L中数据元素的个数
存储结构定义
数据存储结构的C语言定义如下:
typedef struct LNode//定义单链表结点类型
{ ElemType data;
struct LNode *next;
}LinkList;
基本操作
数据结构的基本操作实现如下:
DispList(LinkList *L):输出单链表L
CreatListR(LinkList *L,ElemType a[],int n):运用尾插法建立单链表
Sort(LinkList *head):单链表元素排序
shanchu(LinkList *head):在进行过Sort排序之后,删除单链表里相同的元素
bing(LinkList *ha,LinkList *hb,LinkList *hc ):求两个有序集合的并
jiao(LinkList *ha,LinkList *hb,LinkList *hc):求两个有序集合的交
cha(LinkList *ha,LinkList *hb,LinkList *hc):求两个有序集合的差、
main():采用尾差法建立单链表,使用Sort进行单链表排序构成有序链表,在使用shanchu函数删除相同元素和非小写字母。利用一个switch语句进行运算的选择,使用相关函数对有序链表进行交并差的相关运算
解题过程
问题分解
该问题主要应实现以下功能:
利用尾差法建立单链表
对于输入的链表进行有序排列
删除有序链表中不符合要求的元素
调用函数对单链表进行交,并,差运算,并输出
模块结构
系统主要由8个模块组成,分别是:
单链表的建立
单链表的有序排列
删除单链表中不符合条件的元素
集合交集
集合并集
集合差集
单链表输出
主函数
模块之间的结构如下:
主函数
主函数
单链表的建立及由于排列
单链表的建立及由于排列
删除不符合条件的元素
删除不符合条件的元素
集合交集
集合交集
集合差集单链表输出
集合差集
单链表输出
集合并集
集合并集
解题思路
各模块的实现步骤为:
在尾差法建立单链表时,开始时指针指向头结点。
建立有序列表是利用指针的移动来是后续的元素和第一次个元素进行比较,并使用while循环实现单链表的有序排列。
判定有序单链表中的重复元素定义指针p,通过指针p访问链表中的元素并且通过if语句检测链表中的元素。对于不属于小写字母的元素判定后进行删除操作。
定义三个头结点pa,pb,pc,把ha的元素赋给hc,在使用指针移动与hb中的元素进行比较,不同的元素则插入到hc中,相同时指针移动到ha的下一个元素。当ha为空,直接把hb赋给hc。
同样定义了三个结点,不过hc是pa与pb不同的元素。
差集是通过指针的移位把两个有序单链表中的元素进行比较,不同的话,则赋给hc。
利用主函数把有序单链表,及三个函数输出链表进行输出
主函数通过一个switch语句,方便的对函数进行调用,从而进行集合的交,并,差运算。
实现
代码及注释:
#include iostream
#include malloc.h
using namespace std;
typedef char ElemType;
typedef struct LNode//定义单链表结点类型
{ ElemType data;
struct LNode *next;
}LinkList;
void CreatListR(LinkList *L,ElemType a[],int n) //运用尾插法建立单链表
{ LinkList *s,*r;int i;
您可能关注的文档
- 用微波炉加热蛋带不带壳都有危险.pptx
- 用心,让服务处不在.ppt
- 用心、用智慧战每一天.ppt
- 用心倾听来自生的声音.doc
- 用心做事十二(最新).ppt
- 用心去爱每一孩子-1.ppt
- 用心做老师(爱芹).ppt
- 用心呵护孩子思拓科的用意.ppt
- 用心培养智障童的生活自理能力.doc
- 用心守护学生全 精心看护精神家园.doc
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
原创力文档


文档评论(0)