线性表的类型定义

1.线性表的定义和特点

数据结构(Data Structure)是相互之间存在一种或多种特定关系的数据元素的集合。也可以说时带有结构的数据元素的集合,“结构”就是指数据元素之间的关系。

数据结构包括逻辑结构和存储结构两个层次。

1.逻辑结构,通常分为四类基本结构,(1)集合结构,(2)线性结构,(3)树结构,(4)图结构。又可以分为两类,线性结构和非线性结构。其中集合结构,树结构,图结构都属于非线性结构。而线性结构包括线性表,栈和队列,串,数组等。
2.存储结构,在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。

线性结构的基本特征是除第一个元素无直接前驱,最后 一 个元素无直接后继之外,其他每个数据元素都有一个前驱和后继。线性表是最基本且最常用的一种线性结构, 同时也是其他数据结构的基础。
在日常生活中,有很多线性表的例子,如26个英文字母(A,B,C,…,Z)就是一个线性表,其中数据元素为单个的字母ABC等,数据元素也可以包含很多个数据项,例如常见的图书管理系统,每本数为一个数据元素,通常包括书号,书名,价格等项。

不同的线性表中,数据元素可能不同,但同一线性表中的元素时具有相同的特性,它们都是属于同一数据对象,相邻数据元素之间存在着序偶关系。
诸如此类由n (n>=0)个数据特性相同的元素构成的有限序列称为线性表。
线性表中元素的个数n (n>=0)定义为线性表的长度,n = 0时称为空表。
对千非空的线性表或线性结构, 其特点是:
(1) 存在唯一的一个被称作"第一个"的数据元素;
(2) 存在唯一的一个被称为“最后一个”的数据元素;
(3)除第一个之外,结构中的每个数据元素都只有一个前驱;
(4)除最后一个之外, 结构中的每个数据元素均只有一个后继。

2.线性表的类型定义

下面是线性表的抽象数据类型定义:
ADT List{
数据对象: D={ai I ai属于ElemSet, i=l, 2, …, n, n>=0}
数据关系: R=(<ai-1,ai>I ai-1,ai属于D, i=2, …, n}
基本操作:
InitList (&L)
操作结果:构造一个空的线性表L。
DestroyList(&L)
初始条件:线性表L已存在。
操作结果:销毁线性表L。
ClearList (&L)
初始条件:线性表L已存在。
操作结果:将L重置为空表。
ListEmpty(L)
初始条件:线性表L已存在。
操作结果: 若 L为空表, 则返回true, 否则返回false。
ListLength(L)
初始条件:线性表L已存在。
操作结果:返回L中数据元素个数。
GetElem(L,i,&e)
初始条件:线性表L巳存在, 且1<=i<=ListLength(L)。
操作结果:用e返回L中第1个数据元素的值。
LocateElem(L,e)
初始条件:线性表L已存在。
操作结果:返回L中第1个 值与e相同的元素在 L中的位置 。若这样的数据元素不存在 , 则返回值为0。
PriorElem(r,cur_e,&pre_ e)
初始条件:线性表L已存在。
操作结果:若cur_e 是L的数据元素,且不是第一个,则用pre_e返回其前驱,否则操作失败 ,pre_e无定义。
NextElem(L,cur_e,&next_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回其后继,否则操作失败,next_e无定义。
Listinsert(&L,i,e)
初始条件:线性表L已存在,且1<=i<=ListLength (L) +1。
操作结果:在 L中第1个位置之前插入新的数据元素 e, L的长度加1。
ListDelete(&L,i)
初始条件:线性表L已存在且非空 ,且1<=i<=ListLength (L)。
操作结果:删除L的第1个数据元素, L的长度减1。
TraverseList(L)
初始条件:线性表L已存在。
操作结果:对线性表L进行遍历,在遍历过程中对 L的每个结点访问一次。
}ADT List

(1)抽象数据类型仅是一个模袒的定义,并不涉及模型的具体实现,因此这里描述
中所涉及的参数不必考虑具体数据类型。
(2)上述抽象数据类型中给出的操作只是基本操作,由这些基本操作可以构成其他
较复杂的操作。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值