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

🦄个人主页:修修修也

🎏所属专栏:数据结构

⚙️操作环境: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

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

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

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

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


结语

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

相关文章推荐

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

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

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

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

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

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

......



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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修修修也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值