线性表以及线性表的各种操作

1.线性表的定义

若将线性表记为(a1,...,ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。
线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
注:线性表只有一个前驱和后驱,而且线性表是最常用且最简单的一种数据结构。

2.线性表的顺序存储结构

线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储线性表的数据元素。

线性表的顺序存储结构如图所示:

2.1地址计算方法

用数组存储顺序表意味着要分配固定长度的数组空间,分配的数组空间大于等于当前线性表的长度,数据元素的序号和存放它的数组下标之间存在对应关系:

存储器的每个存储单元都有自己的编号,这个编号称为地址。

每个数据元素都需要占用一定的存储单元空间的,假设占用的是c个存储单元,对于第i个数据元素ai存储位置为(LOC表示获得存储位置的函数):

LOC(ai) = LOC(a1) + (i-1)*c

(1)线性表的动态分配顺序存储结构:

#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTONCREMENT 10 //线性表存储空间的分配增量
typedef struct{
ElemType *elem; //存储空间基地址
int length; //当前长度
int listsize; //当前分配存储容量
}SqList;

(2)顺序表的初始化操作:

Status InitList(SqList &L)
{
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}

原文地址:https://www.cnblogs.com/gzh666666/p/10952729.html

时间: 2025-01-01 08:06:31

线性表以及线性表的各种操作的相关文章

数据结构-02 _用顺序表解决线性表的编程问题

看到这个标题,相必最先应该只到什么是顺序表,什么是线性表. 线性表(linear list):由n(n>=0)个相同的数据类型的数据元素(结点)a0,a1,a2,...an-1 组成的有限序列. 顺序表:把线性表的结构按照逻辑顺序存放在一组地址连续的存储单元里,用这种方式存储的线性表简称顺序表. 线性表的基本操作: 1.初始化操作 2.插入操作:InsertNode(T a,int i) 在线性表的第i个位置插入一个值为a的新元素,使得原序号为i,i+1,...,n 的数据元素的序号变成i+1,

【数据结构】 线性表的顺序表

线性表是一种最为常用的数据结构,包括了一个数据的集合以及集合中各个数据之间的顺序关系.线性表从数据结构的分类上来说是一种顺序结构.在Python中的tuple,list等类型都属于线性表的一种. 从抽象数据类型的线性表来看,一个线性表应该具有以下这些操作(以伪代码的形式写出): ADT List: List(self) #表的构造操作,创建一个新表 is_empty(self) #判断一个表是不是空表 len(self) #返回表的长度 prepend(self,elem) #在表的开头加入一个

线性表,线性表和链表的区别

存储类别 顺序存储结构 单链表 存储分配方式 用一段连续的存储单元依次存储线性表的数据元素 采用链式存储结构,用一组任意的存储单元存放线性表的元素 时间性能 查找O(1).插入和删除O(n) 查找O(n).插入和删除O(1) 空间性能 需要预分配存储空间,分大了浪费,小了容易发生上溢 不需要分配存储空间,只要有就可以分配,元素个数不受限制 通过上面的对比,可以得出一些经验性的结论: 若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构.若需要频繁插入和删除时,宜采用单链表结构. 当

《数据结构》复习之线性表(顺序表和链表)

线性表的概念 线性表的比较 线性表的数据结构 顺序表的算法操作 双链表的补充 总结 1.线性表的概念 线性表的存储结构有顺序存储结构和链式存储结构两种.前者成为顺序表,后者称为链表. 顺序表: 顺序表就是把线性表中的所有元素按照其逻辑顺序,一次存储到从指定的存储 位置开始的一块连续的存储空间中,如下图所示. 链表 在链表的存储中,每一个节点不仅包含所存元素本身的信息,还包含元素之间的逻辑关系的信息,即前驱节点包含后继节点的地址信息,这样就可以通过前驱节点中的地址信息方便地找到后继节点的位置,如下

C#线性表之顺序表

线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: (1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素: (2)除最后一个位置的数据元素外,其它数据元素位置的后面都只有一个元素.也就是说,数据元素是一个接一个的排列.因此,可以把线性表想象为一种数据元素序列的数据结构. 线性表的接口如下所示. public interface I

线性表之顺序表(C语言实现)

线性表是从数据元素的逻辑结构上定义的. 这种数据元素的逻辑结构的特征如下: 1.除开第一个和最后一个元素之外.所有元素都有一个前驱元素和后继元素. 2.第一个元素无前驱元素,但有后继元素. 3.最后一个元素有前驱元素,单无后继元素. 可以抽象为如下表述: 元素1 元素2 元素3 元素4 元素5 元素6 然而同一种逻辑结构在内存中却可以有两种存储方式:1.在内存中连续存储的线性表-----顺序表(如数组)                  2.在内存中离散存储的线性表-----链表(如单链表,双链

数据结构-线性表_顺序表

进入大学一年了,今日终于有勇气写写随笔并展示出来了. 如有不足之处,请大家指正. 今日我想写的就是我对数据结构-线性表_顺序表的理解. 不BB了,进入正题!!!!! 数据结构中的逻辑结构分为线性结构和非线性结构,而线性表就属于线性结构. 线性结构是 n 个数据元素的有序(次序)集合,它有下列几个特征: 集合中必存在唯一的一个 "第一个元素": 集合中必存在唯一的一个 "最后的元素": 除最后元素之外,其它数据元素均有唯一的 "后继": 除第一元素

广义表(线性表的推广)

广义表的定义 广义表是线性表的推广. 广义表一般记作LS=(d0,d1,...dn-1) 其中,LS是广义表(d1,d2,...dn)的名称,n是它的长度.在线性表的定义中,ai(1<=i<=n)只限于是单个元素.而在广义表的定义中,di可以是单个元素.也可以是广义表,分别称为广义表LS的单元素和子表.习惯上,用大写字母表示广义表的名称,用小写字母表示单元素.当广义表LS非空时,称第一个元素d0为表头(Head),称其余元素组成的表(d1,d2,...dn-1)是LS的表尾(Tail). 显然

线性表之顺序表奇偶调整和单链表就地逆置

线性表之顺序表奇偶调整,就是指将顺序表的奇数与偶数位置互换,以最优方法解决,因为方法很多,比如,开辟一个新的顺序表分别存放奇偶数,也可以从头向后寻找奇偶数放置到尾部或头部,但这些都会增大时间与空间的消耗.最优法则是前后分别寻找奇偶不同类型数,满足前奇后偶(或前偶后期),交换两数位置,实现时间复杂度O(n),空间O(1)的方案. void AdjustSqlist(SeqList *L) { int i=0,j=L->last; int temp; while(i<j) { while(L-&g

线性链表之顺序表

顺序表中数据元素的存储地址是其序号的线性函数,只要确定了存储顺序表的起始地址(即 基地址),计算任意一个元素的存储地址的时间是相等的,具有这一特点的存储结构称为[随机存储]. 使用的基本数据结构:数组 特点:顺序存取,随机访问. /* Name: SeqList Copyright: 1.0 Author: Johnny Zen Date: 04/06/17 21:51 Description: 线性链表之顺序表 *//* Chinese:顺序(线性)表 English:SeqList*/#in