数据结构与算法—线性表(c/c++)

本文介绍了线性表的抽象数据型,包括线性表的定义、顺序存储结构和链式存储结构,以及一系列操作如插入、查找、删除等。线性表由相同类型元素构成的序列,可以用数组或链表实现。讨论了线性表在数组和链表中的位置操作,并定义了线性表的基本操作集。
摘要由CSDN通过智能技术生成

写在前面:

本系列主要参考书目:哈工大《数据结构与算法》

1.线性表的抽象数据型

1.1线性表定义

线性表(LIST)是由零个或多个具有相同类型的元素组成的序列。                                                                                 可记为a1,a2,a3,···,an,每个元素ai的型记为Elementtype。其中n表示线性表的表长,故若n=0,则表示这个线性表为一个空表。又线性表中任何一个元素与其在表中的位置一一对应,比如a1是表的第一个元素,an是表的第n个元素,很显然的我们可以得到ai在表中的位置为i(线性表的位置概念)。

线性表主要有顺序存储结构和链式存储结构,我们可以通过数组和链表来存储线性表。

基于线性表的存储结构,我们可以定义一些线性表的操作。

1.2线性表的操作集

下面我们开始操作集的定义。设L是型为LIST的线性表的一个实例,且L可表示为a1,a2,a3,···,an,x为型为Elementtype的一个元素,p为一个位置变量,则有:

(1)Insert(x,p,L)。这个操作很容易理解,就是将型为Elementtype的x(可以理解为数据类型,这里我们用Elementtype来指代任何数据类型)插入到线性表L的p处。显然,如果L中不存在位置p,则结果没定义。

(2)End(L)。为方便,假设线性表的表尾(表的最后一个元素所在的位置,如an所处的位置n)之后还有一个特殊位置,这个操作End(L)就是获取线性表L的这个特殊位置(如n+1)

 (3)First(L)。该操作为返回表L的第一个位置,如果L为空表则返回End(L)。

(4)Locate(x,L)。该操作为返回表L中元素x所在的位置,若L中有多个x(x在L中多次出现),则返回表L第一次出现x的位置。如果L中并没有x,则返回End(L)。

(5)Retrieve(p,L)。该操作为返回表L位置为p的元素。

(6)Delete(p,L)。该操作为删除线性表L中位置为p的元素。如果p不在线性表中,则结果无定义。

(7)Previous(p,L)和Next(p,L)。这两个操作分别返回线性表L中位置为p的前一个元素的位置(即前导)和后一个元素的位置(即后继)(这里要注意,并不是返回L的p处的前一个元素和后一个元素,而是返回他们的位置,对于数组而言,这个操作似乎没有什么用,但对于链表来说,返回位置变量p的前一个位置和后一个位置还是很有意义的)。如果p是L的最后一个位置,则Next(p,L)=End(L)。如果p是L的第一个位置,则Previous(p,L)没有定义。显然如果p不在L中,则两个操作均没有意义。

(8)MakeNull(L)。该操作为将L置为一个空表,并返回End(L)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值