线性表(理论)

线性表是由相同类型元素组成的有限序列,具有唯一开始节点和终端节点,每个元素有一个直接前驱和后继。线性表的抽象数据类型包括初始化、清空、判断空表、获取长度、插入、删除、获取和设置元素值等基本操作。这些操作是线性表数据结构的核心功能。
摘要由CSDN通过智能技术生成

一、线性表的定义和特点

线性表是具有相同特性的数据元素的一个有限序列:
L = ( a 1 , a 2 , . . . , a i − 1 , a i , a i + 1 , . . . , a n ) L = (a_1, a_2, ..., a_{i-1}, a_i, a_{i+1}, ..., a_n) L=(a1,a2,...,ai1,ai,ai+1,...,an)
要注意的问题是:

  • 线性表是一个由数据元素组成的序列。
  • 线性表中元素的数据类型是相同的,这意味着每个元素在内存中所占用的空间是相同的。
  • 线性表中的元素是有限的。

在一个线性表中,a1是起始节点,an是终端节点;中间的一个元素ai的前一个元素ai-1被称为是元素ai的直接前驱,后一个元素ai+1被称为是元素ai的直接后继。

线性表中元素的下标,是元素的序号,表示元素在线性表中所处的位置;线性表中最后一个元素的序号n称为线性表的长度,即线性表中元素的总个数;如果n = 0,则表示线性表中没有元素,称此线性表是一个空表。

从上面的定义可以看出,一个长度至少为2的线性表具有如下的逻辑特征:

  • 它有且仅有一个开始节点a1,它没有直接前驱,只有一个直接后继a2
  • 它有且仅有一个终端节点an,它没有直接后继,只有一个直接前驱an-1
  • 任何内部节点ai都有且仅有一个直接前驱ai-1和一个直接后继ai+1(2≤i≤n-1)。

二、线性表的类型定义

ADT List {
	数据对象:D = 线性表中元素的集合。
	数据关系:R = { <ai-1, ai> | ai-1, ai ∈ D, i = 2, 3, ..., n }
	基本操作:
		ListInit(L);					// 初始化一个线性表。
		ListClear(L);					// 清空一个线性表。
		ListEmpty(L);					// 判断线性表是否是一张空表。
		ListLength(L);					// 获取线性表的长度。
		ListInsert(L, i, e)				// 在线性表的指定位置插入一个元素。
		ListDelete(L, i, e)				// 从线性表的指定位置删除一个元素。
		ListGetElem(L, i, e)			// 获取线性表中指定位置的值。
		ListSetElem(L, i, e)			// 修改线性表中指定位置的值。
		ListLocateElem(L, e, compare)	// 在线性表中定位某个元素的下标。
		PriorElem(L, cur, &pre)			// 获取线性表中某个元素的直接前驱。
		NextElem(L, cur, &nxt)			// 获取线性表中某个元素的直接后继。
		ListDestroy(L);					// 销毁一个线性表。
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值