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

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

线性表抽象数据类型(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中即可.


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


结语

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



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


相关文章
|
5月前
|
存储 C语言
数据结构中的线性表链式存储介绍及其基本操作
链式存储是线性表的一种重要存储方式,它通过节点和指针的结构,实现了灵活的动态存储管理。本文介绍了单向链表的基本操作,并提供了相应的C语言代码示例。理解和掌握链表的操作对学习和应用数据结构具有重要意义。希望这篇博客能帮助你更好地理解线性表的链式存储。
128 2
|
1月前
|
存储 Java
数据结构第二篇【关于java线性表(顺序表)的基本操作】
数据结构第二篇【关于java线性表(顺序表)的基本操作】
30 6
|
1月前
|
存储 JavaScript 前端开发
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
67 1
|
17天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储
【数据结构】线性表和顺序表
【数据结构】线性表和顺序表
21 1
|
1月前
01(数据结构考研)线性表相关操作代码
01(数据结构考研)线性表相关操作代码
59 0
|
1月前
|
存储 C语言
数据结构之线性表的初始化及其操作
数据结构之线性表的初始化及其操作
36 0
|
2月前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。
|
5月前
|
存储 测试技术
【数据结构】操作受限的线性表,栈的具体实现
【数据结构】操作受限的线性表,栈的具体实现
60 5
|
5月前
|
存储 测试技术
【数据结构】操作受限的线性表,队列的具体实现
【数据结构】操作受限的线性表,队列的具体实现
44 4