知识大全 线性表- 顺序存储结构- 顺序表
Posted 结点
篇首语:不登高山,不知天之高也;不临深溪,不知地之厚也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 线性表- 顺序存储结构- 顺序表相关的知识,希望对你有一定的参考价值。
顺序表
顺序表的定义
( ) 顺序存储方法
即把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法
( ) 顺序表(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 ]中
顺序表的特点
顺序表是用向量实现的线性表 向量的下标可以看作结点的相对地址 因此顺序表的的特点是逻辑上相邻的结点其物理位置亦相邻
cha138/Article/program/sjjg/201311/23372相关参考
线性表的顺序存储是线性表的一种最简单最直接的存储结构它是用内存中的一段地址连续的存储空间顺序存放线性表的每一个元素用这种存储形式存储的线性表我们称其为顺序表在顺序表中用内存中地址的线性关系表示线性
顺序表定义 顺序表即用一组连续的存储单元依次存放线性表的数据元素 若每个数据元素占用c个存储单元并以所占的第一个存储单元地址作为这个数据元素的存储位置则表中任一元素ai的存储地址为 LOC
顺序表上实现的基本运算 表的初始化 voidInitList(SeqList*L) \\\\顺序表的初始化即将表的长度置为 L>length=; 求表长 intListLen
顺序表的删除 线性表的删除运算是指将表的第i(≤i≤n)个位置上的结点删除使长度为n的线性表(a…aiai…an)变成长度为n的线性表(a…aiai+…an) 删除操作分为相应两个阶段只是顺序与前
基于空间的考虑 当线性表的长度变化较大难以估计其存储规模时以采用动态链表作为存储结构为好 当线性表的长度变化不大易于事先确定其大小为了节约存储空间宜采用顺序表作为存储结构 存储密度(Storag
在程序设计语言中一维数组在内存中占用的存储空间就是一组连续的存储区域因此用一维数组来表示顺序表的数据存储区域是再合适不过的考虑到线性表的运算有插入删除等运算(即表长是不断变化的)因此数组的容量需足
根据C语言中函数参数的传递采用值传送的规则有时定义一个指向SeqList类型的指针更为方便能够实现信息的回送因此我们定义一个指针类型 typedefSeqList*PSeqList; PSeq
因为串是特殊的线性表故其存储结构与线性表的存储结构类似只不过由于组成串的结点是单个字符所以存储时有一些特殊的技巧 串的顺序存储 顺序串 串的顺序存储结构简称为顺序串 与顺序表类似顺序串是用
因为串是特殊的线性表故其存储结构与线性表的存储结构类似只不过由于组成串的结点是单个字符所以存储时有一些特殊的技巧串的顺序存储顺序串 串的顺序存储结构简称为顺序串 与顺序表类似顺序串是用一组地址
顺序表的存贮特点是利用物理上的相邻关系表达出逻辑上的前驱和后继关系它要求用连续的存储单元顺序存储线性表中各元素因此对顺序表进行插入和删除时需要通过移动数据元素来实现线性表的逻辑上的相邻关系从而影响