线性表2

让编程改变世界

Change the world by program


线性表的抽象数据类型

上节课我们讲到了线性表的定义,讲到了所谓抽象数据类型就是把数据类型和相关操作捆绑在一起。 那么我们接下来分析一下,线性表应该有什么样的相关操作呢?   还是回到小甲鱼组织大家春游的例子,小甲鱼把鱼油们按照规律安排成一队,并且是长期使用这样的顺序排队,大家只需要记住自己的前驱鱼油就可以了。 那么这个考虑和安排的过程其实就是一个线性表的创建和初始化过程。   一开始小甲鱼没经验呀,把鱼油们按照名字第一个字母的规律排队,发现排到最后有的高有的矮,导致队伍很难看,于是让鱼油们解散重新按照从矮到高排。 上边这么描述的过程其实就是线性表重置为空表的操作过程,接着给大家描述下删除数据。   排好队后,尼玛,发现黑夜童鞋由于昨晚吃太多麻辣烫,今天闹肚子来不了春游。 那么由原来排在黑夜后边的小生开始往前挪。   当然有删除数据就有插入数据,黑夜童鞋下午肚子康复了,又回来了。 黑夜童鞋说记得是排在斜阳后边的,所以让从斜阳后边的小生开始往后退一个位置,黑夜就可以插回自己的位置上了。   噢,我们活动开始了不久,隔壁来了春田花花旅游团都是美眉啊,各种调戏有木有?然后小甲鱼被她们的导游投诉了有木有?! 导游说你们队伍里第八个那个家伙老是调戏我们队里的小花,他叫什么名字?小甲鱼查了下名单说,噢,他叫迷途。   好吧,这就是根据位序得到数据元素的例子。 好了,剩下的还有很多大家可以自己想象。

我们给大家总结下线性表的抽象数据类型定义:

[codesyntax lang="php"]

ADT 线性表(List)Data线性表的数据对象集合为{a1,a2,…,an},每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。OperationInitList(*L): 初始化操作,建立一个空的线性表L。ListEmpty(L): 判断线性表是否为空表,若线性表为空,返回true,否则返回false。ClearList(*L): 将线性表清空。GetElem(L,i,*e): 将线性表L中的第i个位置元素值返回给e。LocateElem(L,e): 在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。ListInsert(*L,i,e): 在线性表L中第i个位置插入新元素e。ListDelete(*L,i,*e): 删除线性表L中第i个位置元素,并用e返回其值。ListLength(L): 返回线性表L的元素个数。endADT

[/codesyntax]   对于不同的应用,线性表的基本操作是不同的,上述操作是最基本的。 对于实际问题中涉及的关于线性表的更复杂操作,完全可以用这些基本操作的组合来实现。   举个例子?好吧,比如要实现两个线性表A、B的并集操作,即要使得集合A=A∪B。 解释下“A=A∪B”:说白了,就是把存在集合B中但不存在集合A中的元素插入到A中即可。   [caption id="attachment_1649" align="alignnone" width="559"] 线性表,并集原理[/caption]   其实仔细思考一下,我们只需要循环遍历集合B中的每个元素,判断当前元素是否存在A中,弱不存在,则插入A中即可。 综合分析,我们需要运用到几个基本的操作组合即可:

ListLength(L); GetElem(L,i,*e); LocateElem(L,e); ListInsert(*L,i,e);

参考实现代码段:union.c [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LBNLMOCJXIVZ']视频下载[/Downlink] [Downlink href='http://urlxf.qq.com/?VVBNFvu']备胎下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2012/10/12/3846260.html

线性表2 - 数据结构和算法07相关推荐

  1. 线性表7 - 数据结构和算法12

    线性表7 让编程改变世界 Change the world by program 单链表的整表创建 对于顺序存储结构的线性表的整表创建,我们可以用数组的初始化来直观理解. 而单链表和顺序存储结构就不一 ...

  2. 线性表9 - 数据结构和算法14

    线性表9 让编程改变世界 Change the world by program 静态链表 这一节课,我们试图通过静态链表的讲解来瞻仰古人的伟大!(似乎人总要挂了之后才能变得伟大~_~) 神马是静态链 ...

  3. 线性表顺序存储结构操作算法

    线性表顺序存储结构操作算法 ** 顺序表的初始化 线性表的插入算法 线性表的删除算法 线性表的查找算法** 根据书本的知识线性表顺序存储结构的操作算法其实是我们刚进入数据结构与算法的必修课 其实算法无 ...

  4. 线性表:顺序队列算法实现

    顺序队列介绍 顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.我们知道队列是一种先将先出的数据结构,它是一种受限制的线性表,我们的顺序队列是一种队列,采用的是顺序存储结构.与其对应的是 ...

  5. php数据结构之线性表,php数据结构之顺序链表与链式线性表示例

    本文实例讲述了php数据结构之顺序链表与链式线性表.分享给大家供大家参考,具体如下: 链表操作 1. InitList(L):初始化链表 2. DestroyList(L):删除连接 3. Clear ...

  6. 数据结构 线性表java_java数据结构--线性表

    一.线性表基本概念 线性表是其组成元素间具有线性关系的一种线性结构,是由n个数据类型相同的元素构成的有限序列.其具有"一对一"的逻辑关系,与位置有关,除了头尾元素之外,每一个元素都 ...

  7. mysql 线性表_数据结构之线性表

    概要 参考<大话数据结构>,把常用的基本数据结构梳理一下. 线性表 定义 线性表(List):零个或多个数据元素的有限序列. 若将线性表记为 \((a_1, \cdots, a_{i-1} ...

  8. python hash表_python数据结构与算法——哈希表

    哈希表 学习笔记 参考翻译自:<复杂性思考> 及对应的online版本:http://greenteapress.com/complexity/html/thinkcomplexity00 ...

  9. c语言构造一个空线性表l,数据结构线性表顺序结构的定义与实现C语言-Go语言中文社区...

    大家好,今天给大家总结了一下数据结构里面的线性表的顺序结构,顺序表表示的是用一组地址连续的存储单元依次存储线性表的数据元素,所以顺序结构的实现一般采用数组的方式来实现,存储空间也采用动态分配的方式.在 ...

  10. mysql 线性表_数据结构-线性表之顺序表

    线性表 (1)逻辑结构和物理结构 物理结构:数据元素在内存中真实的存放次序,有可能是连续存放的,也可能是散落于内存里. 逻辑结构:为了便于描述数据元素之间的关系,我们想象出数据之间应该有某种的对应关系 ...

最新文章

  1. 截取指定内容/截取用逗号隔开的各个关键字
  2. 虚机和实体服务器性能,虚机的性能主要与以下几方面有关
  3. oracle死锁解决常用方法(屡试不爽)
  4. [Java基础]Calendar类基础
  5. 属性拼接转换成字符串_使用一些可选的将字符串配置属性转换为其他类型
  6. WebMagic学习总结
  7. Linux工作笔记-ssh中-X属性的使用(Linux传界面)
  8. 基于centos6.5搭建redis伪分布式主备节点
  9. 11g表名大小写 oracle_oracle表名、字段名大小写问题。
  10. Windows Server Update Service 3.0 配置向导
  11. 分享12款 JavaScript 表格控件(DataGrid)
  12. 项目经理要提升需求分析的能力
  13. 无线接入回传一体化关键技术及标准化进展
  14. SIM800A/C只能发短信不能收短信解决方案
  15. neo4j中实现关键路径算法
  16. 付款方对接银联入网仿真测试系统
  17. 特殊符号大全复制_特殊符号大全爱好者工具讲解
  18. 统计学知识大梳理(附框架图公式)
  19. svn使用openldap验证apache访问方式
  20. iOS动画之转场动画CATransition

热门文章

  1. 我眼中的光明·第六周·蓝天·一
  2. 实现div元素在整个屏幕的的垂直居中之translateY(-50%)的利用
  3. 级联样式单与CSS选择器
  4. 铁路“探花儿”:每天徒步8公里 一个月穿坏一双鞋
  5. ajax日期格式,ajax读取的日期的格式转换
  6. 腾讯不缺少梦想,但是缺算法与数据管理
  7. 带头节点 (非头指针) 双向链表 (doubly linked list)
  8. 华三AP(wa4320acn)wifi设置(命令行)
  9. 《社交网络》中Facemash算法分析
  10. 此windows7副本不是正版、黑屏7601的解决办法