❶ 线性表存储结构有哪几种
线性表这种抽象结构在实现是有数组实现和链表实现两种存储结构。
数组实现我们知道在定义的时候要固定长度,因此存储数据过多时会溢出,过少时浪费存储空间,但是相关操作实现起来比较简单。
链表实现是动态获取内存单元,存储数据时基本不受空间限制(受内存大小限制),几乎不会浪费存储空间,但是相关操作实现起来比数组复杂一点。
❷ 线性表- 顺序存储结构- 顺序表
顺序表
顺序表的定义
( ) 顺序存储方法
即把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法
( ) 顺序表(Sequential List)
用顺序存储方法存储的线性表简称为顺序表(Sequential List)
结点a i 的存储地址
不失一般性 设线性表中所有结点的类型相同 则每个结点所占用存储空间大小亦相同 假设表中每个结点占用c个存储单元 其中第一个单
元的存储地址则是该结点的存储地址 并设表中开始结点a 的存储地址(简称为基地址)是LOC(a ) 那么结点a i 的存储地址LOC(a i
)可通过下式计算
LOC(a i )= LOC(a )+(i )*c ≤i≤n
注意
在顺序表中 每个结点a i 的存储地址是该结点在表中的位置i的线性函数 只要知道基地址和每个结点的大小 就可在相同时间内求出任一结
点的存储地址 是一种 随机存取结构
顺序表类型定义
#define ListSize //表空间的大小可根据实际需要而定 这里假设为
typedef int DataType; //DataType的类型可根据实际情况而定 这里假设为int
typedef struct {
DataType data[ListSize];//向量data用于存放表结点
int length;//当前的表长度
}SeqList;
注意
① 用向量这种顺序存储的数组类型存储线性表的元素外 顺序表还应该用一个变量来表示线性表的长度属性 因此用结构类型来定义顺序表类
型
② 存放线性表结点的向量空间的大小ListSize应仔细选值 使其既能满足表结点的数目动态增加的需求 又不致于预先定义过大而浪费存储
空间
③ 由于C语言中向量的下标从 开始 所以若L是SeqList类型的顺序表 则线性表的开始结点a 和终端结点a n 分别存储在L data[ ]和
L Data[L length ]中
④ 若L是SeqList类型的指针变量 则a 和a n 分别存储在L >data[ ]和L >data[L >length ]中
顺序表的特点
顺序表是用向量实现的线性表 向量的下标可以看作结点的相对地址 因此顺序表的的特点是逻辑上相邻的结点其物理位置亦相邻
lishixin/Article/program/sjjg/201311/23372
❸ 线性表的顺序存储结构是随机存取的
可以参考下面几种解释
1、解释一:
顺序存储结构的地址在内存中是连续的所以可以通过计算地址实现随机存取,与此相对 链式存储结构的存储地址不一定连续,只能通过第个结点的指针顺序存取
2、解释二:
线性表的顺序存储结构可以通过线性表的首址加偏移的方法计算出来第i个数据的位置a+i*sizeof(单个结构)而线性表的链式存储结构要访问第i个数据,就必须先访问前面的i-1个数据
(3)线性表动态存储顺序结构扩展阅读:
线性表主要由顺序表示或链式表示,在实际应用中,常以栈、队列、字符串等特殊形式使用,顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像,顺序存储结构是随机存取的。
链式表示指的是用一组任意的存储单元存储线性表中的数据元素,称为线性表的链式存储结构。它的存储单元可以是连续的,也可以是不连续的。
❹ 线性表的链式存储结构优于顺序存储结构
线性表的链式存储结构优于顺序存储结构,这句话是错误的。
线性表的存储结构:
线性表主要由顺序表示或链式表示。在实际应用中,常以栈、队列、字符串等特殊形式使用。顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。
链式表示指的是用一组任意的存储单元存储线性表中的数据元素,明纯称为线性表的链式存储结构。它的存储单元可以是连续的,也可以是不连续的。在表示数据元素之间的逻辑关系时,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置),这两部分信息组成数据元素的存储映像,称为结点(node)。
它包括两个域:存储数据元素信息的域称为数激卜咐据域;存储直接后继存储位置的域称为指针域。指针域中存储的信息称为指针或链。
❺ 数据结构线性表之线性表的顺序存储结构[1]
顺序表定义
顺序表 即用一组连续的存储单元依次存放线性表的数据元素 若每个数据元素占用c个存储单元 并以所占的第一个存储单元地址作为这个数据元素的存储位置 则表中任一元素ai的存储地址为 LOC(ai)=LOC(a )+(i )*c ≤i≤n
顺序表特点
为表中相邻的元素ai和ai+ 赋以相邻的存储位置LOC(ai)和LOC(ai+ )
顺序表的基本运算
顺序表的建立
由于程序语言中的向量(一组数组)就是采用顺序存储表示 故可用向量这种数组类型来描述顺序表 我们用结构类型来定义顺序表类型 如下 输入n个整数 产生一个存储这些整数的顺序表L的函数 如下
顺序表的查找
在一个顺序表中查找元素值为x的元素的函数 如下
顺序表的插入
线性表的插入运算是指在表的第i( ≤i≤n)个位置上 插入一个新结点x 使长度为n的线性表(a … ai ai … an)变成长度为n+ 的线性表(a … ai ax ai … an) 插入操作分成两阶段 第一阶段将位于插入点以后的数据元素依次向后移动 为新数据元腾出一个空间 然后在第二阶段中将数据元素插入空挡 在一个顺序表中第i个元素之前插入一个元素x的函数 如下
lishixin/Article/program/sjjg/201311/23508
❻ 数据结构之线性表的顺序存储[1]
线性表的顺序存储是线性表的一种最简单最直接的存储结构 它是用内存中的一段地址连续的存储空间顺序存放线性表的每一个元素 用这种存储形式存储的线性表我们称其为顺序表 在顺序表中用内存中地址的线性关系表示线性表中数据元素之间的关系 这种用物理上的相邻关系实现数据元素之间的逻辑相邻关系简单明了 如图 所示 设 e 的存储地址为Loc(e ) 每个数据元素占d个字节存储单元 则第i个数据元素的地址为
Loc(ei)=Loc(e )+(i )*d ≤i≤n
这意味着只要知道顺序表首地址和每个数据元素所占地址单元的个数就可求出第i个数据元素的地址来 所以线性表的顺序存储结构是一种随机存取的存储结构 具有按数据元素的序号随机存取的特点
线性表
顺序表的内存表示
下标
数据元素
存储地址
存储元素
e
数据结构免费提供,内容来源于互联网,本文归原作者所有。
❼ 顺序表是线性表的什么存储结构
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。