网站大量收购闲置独家精品文档,联系QQ:2885784924

在链表中删除相同点.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在链表中删除相同点

数据结构上机实验报告 题目:在链表中删除相同节点 学生姓名 学生学号 学院名称 计算机学院 专 业 计算机科学与技术 时 间 目 录 第一章 需求分析 1 1.1 原题表述 1 1.2 问题解决方案 1 第二章 概要设计 2 2.1 抽象数据类型 2 2.2 主要算法描述 2 2.3 主要算法分析 3 第三章 详细设计 4 3.1 程序代码 4 第四章 调试分析 7 4.1 出现的问题及解决方法 7 第五章 测试分析 8 5.1 测试样例 8 第六章 未来展望与思考 9 需求分析 1.1 原题表述 假设有两个无序的双向循环链表A和B,结构体为:前驱指针left,后继指针 right,数据date。将它们的头指针分别设为:pHeadA,pHeadB,输入A和B的数值,新建链表,接着构造函数,删除两个链表中相同的节点。 1.2 问题解决方案 1、需要构建双循环链表,对于输入的链表,需要删除重复的结点,需要删除结点的函数。 2、首先把A中含有与B中相同的数据节点找出来组成一个新的链表C 3、遍历链表C,删除A和B的所有和C中节点值相同的节点。 解决方案要求:(1)输入参数:pA、pB两个链表 (2)输出参数:A和B中所有相同数据节点组成的链表C (3)输出参数:删除与C中节点值相同节点之后的链表A和B 第二章 概要设计 2.1 抽象数据类型 ADT DNode { 数据对象:D = { ai = ai | ai ElemSet,i = 1,2,3,…,n, n = 0} 数据关系:S = { ai - 1 ,ai | ai -1 ,ai D, i = 2,3,4,…,n} 基本操作: CreatList(L) 操作结果:构建双循环链表 DeleteSame(L) 初始条件:已建立双循环链表 操作结果:删除链表中的重复元素 Subset(L1,L2,L3) 初始条件:已建立链表L1,L2 操作结果:将L1,L2的交集存入L3 Delete(L1,L2) 初始条件:已存在链表L1,L2 操作结果:在L1中删除L2中的元素 Display(L) 初始条件:已存在链表L 操作结果:依次输出L中的元素 } 2.2 主要算法描述 2.3 主要算法分析 CreatList(L) 一重循环 时间复杂度 = O(n) DeleteSame(L) 二重循环 时间复杂度 = 0(n2) Subset(L1,L2,L3)二重循环 时间复杂度 = 0(n2) Delete(L1,L2)二重循环 时间复杂度 = 0(n2) Display(L) 一重循环 时间复杂度 = O(n) 第三章 详细设计 3.1 程序代码 #includestdio.h #includemalloc.h typedef int ListData; typedef struct DNote{ ListData data; struct DNote * left, * right; }DblNode; typedef DblNode * DblList; //构建双循环链表 void CreatList(DblList L){ int val; L = (DblList)malloc(sizeof(DblNode)); DblList p,q = L; while(scanf(%d,val) val != -1){ p = (DblList)malloc(sizeof(DblNode)); p - data = val; p - left = q; q - right = p; q = p; } q - right = L; L - left = q; } //求交集 void Subset(DblList L1, DblList L2, DblList L){ DblList p, q; L = (DblList)malloc(sizeof(DblNode)); DblList r, s = L; p = L1 - right; wh

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档