《数据结构与算法》——数组长度与线性表长度区别

数组长度与线性表长度区别

     数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。有个别同
学可能会问,数组的大小一定不可以变吗?我怎么看到有书中谈到可以动态分配的一维数
组。是的,一般高级语言,比如 C VB C++ 都可以用编程手段实现动态分配数组,不过
这会带来性能上的损耗。
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是
变化的。
 
     在任意时刻,线性表的长度应该小于等于数组的长度
 
      线性表的定义,起始是 1 ,可 C 语言中的数 组却是从 0 开始第一个下标的,于是线性表的第 i 个元素是要存储在数组下标为 i-1 的位置, 即数据元素的序号和存放它的数组下标之间存在对应关系:
 
 
      用数组存储顺序表意味着要分配固定长度的数组空间,由于线性表中可以进行插入和删除
操作,因此分配的数组空间要大于等于当前线性表的长度。
 
     存储器中的每个存储单元都有自己的编号,这个编号称之为地址。假设占用的是C个存储单元,那么线性表中的第i+1个数据元素的存储位置和第i个数据的存储位置满足以下关系(LOC表示存储位置的函数)
 
 
      
 
    所以对于第i个数据元素ai的存储位置可以由ai推理算出
 
 
 
             

 
可以用下图来辅助理解:
 
 
 
通过这个公式,可以随时算出线性表中任意位置的地址,不管它是第一个还是最后一个,都是相同的时间。
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/qq_41899773/article/details/104860491