线性表- 顺序存储结构- 顺序表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表- 顺序存储结构- 顺序表相关的知识,希望对你有一定的参考价值。
参考技术A顺序表
顺序表的定义
( ) 顺序存储方法
即把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法
( ) 顺序表(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 ]中
顺序表的特点
顺序表是用向量实现的线性表 向量的下标可以看作结点的相对地址 因此顺序表的的特点是逻辑上相邻的结点其物理位置亦相邻
lishixinzhi/Article/program/sjjg/201311/23372
线性表的顺序存储结构
线性表从物理结构上分,有两种存储结构,一种是顺序存储结构,另一种是链式存储。这里呢,先讲一下顺序存储,毕竟,这种存储方式比较简单。
那么什么是顺序存储结构呢?以下,是书中关于线性表顺序存储的标准定义:
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
通过这段标准定义,可以很容易的想到,顺序存储就是通过数组这样的线性存储结构来存放相关元素。因为,数组就是一段地址连续的存储单元。
那么关于顺序存储结构,有哪些注意点呢?
1.存储空间大小即数组最大长度。很明显,为了能够存储够相关的元素,一定要有适当的空间(MAXSIZE)。
2.存储位置。存储空间是一段连续的地址,所以,数组的首地址就是该线性表的存储位置(data)。
3.当前线性表的长度(length)。
以下,线性表的顺序存储结构代码:
#define MAXSIZE 20 //the max length of the list typedef int ElemType; struct SqList{ ElemType data[MAXSIZE]; int length; };
关于数组长度与线性表长度。数组长度指的是能够存储元素的最大的空间量的多少,这个值是个常量,它是不变的。而线性表长度,指的是,当前线性表的元素的个数,它是一个可以变化的量。
既然线性表的元素是借助数组来做的存储。那么,就不得不注意元素的地址。在内存中,每一块内存都有相应的地址编码来标识这块区域。并且,在数组中,第一个元素的下标位置为0,因为数组中的计数是从0开始的。也就是说,第i个位置的元素,其在数组中的存储位置为i-1。并且,由于不同的数据类型所占用的地址不同。在32位计算机中,int类型的数据占4个字节,char类型的数据占1个字节。假设,数组的数据类型是int型,那么,数组中的每一个元素都是int型的,也就是,每一个元素所占地址大小都是4字节。那么获取第i+1个元素的地址,为:LOC(ai+1) = LOC(ai) + 4;若数组的数据类型为c类型,那么第i+1个元素的地址为:LOC(ai+1) = LOC(ai) + c。
所以,对于,第i个数据元素ai的存储位置可以由a1推算得出:LOC(ai) = LOC(a1) + ( i - 1 ) * c。
本文出自 “梵高说我脑子有病” 博客,请务必保留此出处http://chen0547.blog.51cto.com/12489941/1965040
以上是关于线性表- 顺序存储结构- 顺序表的主要内容,如果未能解决你的问题,请参考以下文章