【数据结构】线性表的抽象数据类型

举报
修修修也 发表于 2024/08/31 08:25:16 2024/08/31
【摘要】 🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022​编辑线性表抽象数据类型(LinearListAbstractDataType,简称 ADT)是一种非常重要的抽象数据类型,它是一种使用抽象的方式表示和实现一组数据元素的集合以及与之相关的一组操作的一种抽象数据类型。它是由三个部分组成的:1. 一组数据元素的集合(链表,队列,栈等)2. 这组数据...

🦄个人主页:修修修也

🎏所属专栏:数据结构

⚙️操作环境:Visual Studio 2022

​编辑


线性表抽象数据类型(LinearListAbstractDataType,简称 ADT)是一种非常重要的抽象数据类型,它是一种使用抽象的方式表示和实现一组数据元素的集合以及与之相关的一组操作的一种抽象数据类型

它是由三个部分组成的:

1. 一组数据元素的集合(链表,队列,栈等)

2. 这组数据元素之间的关系(集合关系,线性关系,树形关系,网状关系)

3. 与这组数据元素相关的操作(插入,删除,查找)

我们在上篇中拿这张图给大家类比过线性结构:

​编辑

这张图就是一个数据集合,而数据元素就是一个一个小朋友,很明显他们之间的关系是线性的.

那么这些数据元素之间又会有什么操作呢?

你看上面这张图,一看就是没经验的老师排的队,有的小朋友高,有的矮,队伍一点也不好看.所以我们让小朋友解散重新排——这是一个线性表重置为空表的操作.

​编辑

排好了队,我们想知道某个小朋友在不在队里,在队里的哪个位置?那就要用到查找某个元素位置的操作.

有时候还会有家长问老师,现在班里有几个同学啊?这就要用到求线性表的长度的操作.

当然还会有小朋友转入和转出的操作,这就要用到数据元素的插入和删除操作.

综上,线性表的抽象数据类型定义如下:

ADT 线性表(List)

Data

    线性表的数据对象集合为 {a1, a2, ..., an},每个元素的类型均为DataType.

    其中, 除第一个元素a1外, 每一个元素有且只有一个直接前驱元素.

    除了最后一个元素an外, 每一个元素有且只有一个直接后继元素.

    数据元素之间的关系是一对一的关系.

Operation

    InitList(*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

当然,对于不同的应用,线性表的基本操作是不同的,上面这些只是最基本的,对于实际问题中涉及的关于线性表的更复杂操作,完全可以用这些基本操作的组合来实现.

比如,要实现两个线性表集合AB的并集操作.即要使得集合A=AUB.其实就是把存在于集合B中但并不存在于A中的数据元素插入到A中即可.

再带入到上面的基本操作中,其实就是先循环B中的每个元素,判断是否属于A,如果不存在,则插入到A中即可.

可见,对于复杂的个性化操作,其实就是把基本操作组合起来实现的.


结语

当我们搞清楚线性表的抽象数据类型后,在数据结构线性表篇我们还将一起学习线性表的顺序存储结构(顺序表的实现),线性表的链式存储结构(链表的实现)等相关知识.希望这些内容能对大家有所帮助,一起学习,一起进步!

相关文章推荐

【数据结构】什么是数据结构 ?

【数据结构】什么是算法 ?

【数据结构】线性表的抽象数据类型

【数据结构】线性表的顺序存储结构 ( 顺序表详解 )

【数据结构】线性表的链式存储结构 ( 链表的实现 )

【数据结构】抽象数据类型

......


​编辑


数据结构线性表篇思维导图:

​编辑

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。