`
flyingis
  • 浏览: 290467 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据结构中避免数据项的重复

阅读更多

抽象数据类型(ADT)是一种只能通过接口访问的数据类型,它是字段与基于字段的操作所构成的集合。这里的接口不是interface,而是访问数据的途径,接口把数据的表示和操作方法的实现完全分离开来。两种最基本的ADT是堆栈和队列,并且根据我们的需要,可以构建更为复杂的ADT,例如可以对数据项进行计数,检查数据项是否存在重复等等。<o:p></o:p>

在很多实际应用中,我们都不允许存在数据项重复的情况,需要对用户提交的重复数据进行合适的处理。让用户保证不提交重复的数据可以避免这种情况的发生,但显然这种方法并不实际,既然使用ADT就是为了给使用它的程序员提供简单明了的数据类型解决方案,那么我们就应该在ADT中来解决这个问题。以队列为例,一般可以通过两种策略来处理这个问题:<o:p></o:p>

1.        放弃新输入的数据项:当最新放入队列中的数据项已经在队列中时,放弃当前输入的数据项。<o:p></o:p>

2.        放弃旧的数据项,保存新输入的数据项:当最新放入队列中的数据项已经在队列中时,放弃已经存在于队列中的数据项,保存当前放入的数据项。<o:p></o:p>

    对于第一种处理方式,在一种特殊的情况下,数据项存储的数据是0~N-1之间的整数,那么可以通过增加一个新的数组a[i]或链表来储存boolean类型数据,当队列中第i个位置上已经存在数据i(i<=N-1),设置a[i]=boolean,那么可以通过a[i]来判断数据i是否已经存在于队列中。第二种处理方式比第一种更为复杂一些,如果有必要,还可以让用户去选择采取哪种策略来避免重复的数据项。但不管怎么样,我们可以通过构建不同类型的ADT,并在ADT中实现某些我们所需要的功能,将能极大限度地保证数据结构和算法的灵活性与清晰的结构,使基于ADT的实现能满足各种不同的具体应用,并方便类的重构。
分享到:
评论

相关推荐

    《数据结构 1800题》

    14.以下数据结构中,(A )是非线性数据结构【中山大学 1999 一、4】 A.树 B.字符串 C.队 D.栈 15. 下列数据中,(C )是非线性数据结构。【北京理工大学 2001 六、1(2分)】 A.栈 B. 队列 C. 完全二叉树 ...

    计算机二级C语言考试题预测

    (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的...

    python数据分析报告.docx

    python数据分析报告全文共3页,当前为第1页。python数据分析报告全文共3页,当前为第1页。python数据分析报告 ...将数据集加载到DataFrame中,进行各种数据处理操作,如数据过滤、去除重复项、数据转换等。 python

    数据结构通讯录管理系统课程设计报告.doc

    课程设计〔大作业〕报告 课程名称: 数据结构 设计题目: 通讯录信息管理系统 院 系: 信息技术学院 班 级: 12级计算机2班 设 计 者:******* 学 号: 201211010214 指导SSSSSS 设计时间:— ##学院课程设计〔大...

    数据库系统概论-第四版-第一章练习题及答案(1).doc

    数据库中只存在数据项之间的联系 B.数据库的数据项之间和记录之间都存在联系 C.数据库的数据项之间无联系,记录之间存在联系 D.数据库的数据项之间和记录之间都不存在联系 答案:B 15.相对于其他数据管理技术,...

    Excel 2007数据透视表完全剖析 4/7

    12.1.9 删除的数据项仍然显示在筛选区域中 279 12.1.10 刷新了数据透视表,然后计算字段显示为错误值 280 12.2 数据透视表常见问题解答 281 12.2.1 怎样让数据透视表自动刷新 281 12.2.2 怎样才能同时刷新...

    第一章-数据库系统概述.doc

    A 数据库中只存在数据项之间的联系 B 数据库的数据项之间和记录之间都存在联系 C 数据库的数据项之间无联系,记录之间存在联系 D 数据库的数据项之间和记录之间都不存在联系 16 数据库管理系统的工作不包括________...

    Excel 2007数据透视表完全剖析 1/7

    12.1.9 删除的数据项仍然显示在筛选区域中 279 12.1.10 刷新了数据透视表,然后计算字段显示为错误值 280 12.2 数据透视表常见问题解答 281 12.2.1 怎样让数据透视表自动刷新 281 12.2.2 怎样才能同时刷新...

    Excel 2007数据透视表完全剖析 5/7

    12.1.9 删除的数据项仍然显示在筛选区域中 279 12.1.10 刷新了数据透视表,然后计算字段显示为错误值 280 12.2 数据透视表常见问题解答 281 12.2.1 怎样让数据透视表自动刷新 281 12.2.2 怎样才能同时刷新...

    Excel 2007数据透视表完全剖析 3/7

    12.1.9 删除的数据项仍然显示在筛选区域中 279 12.1.10 刷新了数据透视表,然后计算字段显示为错误值 280 12.2 数据透视表常见问题解答 281 12.2.1 怎样让数据透视表自动刷新 281 12.2.2 怎样才能同时刷新...

    基于大数据平台的数据治理思路.doc

    它是有关数据项的特征的信息,如技术名称、业务名称、 位置、重要性、与企业中其他数据项的关系等。元数据可以用来记录数据血缘关系,跟 踪和记录数据血緣有利于数据源的追溯和查找数据存在的问题。 数据质量管理是...

    wps2019数据分析加载项-数据分析的思维和方法.pdf

    数据清洗:异常数据 重复项/缺失项 模型:回归分析+统计决策树 随机森林+适⽤于时间序列的ARIMA+寻找最优解的单纯性⽅法 R:完全免费的统计分析⼯具 假设型+数据型 excel保存数据为CSV⽂件,⽂本形式的数据,可被...

    BoomFilters:用于处理连续无界流的概率数据结构

    动臂过滤器是用于 概率数据结构。 这包括稳定的Bloom过滤器,可伸缩的Bloom过滤器, Counting Bloom过滤器, Inverse Bloom过滤器, Cuckoo过滤器,传统Bloom过滤器的几种变体, HyperLogLog , Count-Min Sketch和...

    论文研究-基于二级索引结构无候选项闭合序列模式挖掘算法.pdf

    针对CloSpan算法分两个阶段挖掘闭合序列模式中第一阶段需要保持候选序列且未充分利用项的位置信息、存在对数据库重复扫描和计算大小的不足, 提出了posCloSpan算法。算法通过对二级索引结构进行检索实现向前剪枝, ...

    二级C语言公共基础知识

    (2) 以下数据结构中不属于线性数据结构的是______。(C) A. 队列 B. 线性表 C. 二*树 D. 栈 (3) 在一棵二*树上第5层的结点数最多是______。(B) A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是__...

    改进的PrefixSpan算法及其在序列模式挖掘中的应用 (2013年)

    因PrefixSpan算法不产生候选,而适当应用Bitmap数据结构可避免重复扫描数据库,基于此,本文提出了BM-PrefixSpan算法,用于序列模式挖掘,设计并构造了PFPBM(PrefixofFirstPositiononBitMap)表用于记录序列中的每个项在位...

    超市POS机管理系统.zip

    数据库在一个信息管理系统中占有非常重要的地位,数据库结构的设计好坏将直接对应用系统的效率以及...在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范数据管理行为,从而提高了管理效率和水平。

    数据中心需求分析报告---v1.0.docx

    " 在部颁的《公路水路交通运输信息化"十二五"发展规划》中更是明确提出的"加快交通行业信息资源目录体系建设,完善信息共享规则、标准和机制,提高数据资源共享水平,有效避免数据重复和无效采集。完善行业基础...

    浅谈计算机数据库管理系统.doc

    浅谈计算机数据库管理系统 数据库管理系统(database ... 6、改善了数据管理与控制将数据库的责任权交给某一个人或某一个部门有很多好处 ,它有助于数据项及数据关系定义的标准化。通过这种方法,数据字典的规则也变得

Global site tag (gtag.js) - Google Analytics