顺序表的一体式结构与分离式结构
顺序表的结构
数据存储时需要预估存储多少数据,数据表分成两部分(表头信息和数据区),表头区记录存储容量和当前存储了多少个元素,数据区记录已经存储了多少个数据。
连续式存储如下:
4代表可以存储4个元素,3代表已经存储了3个,3下面的4个位置有三个被占用,剩下一个为空。
分离式存储如下:
分离式的话需要先找到0x111,然后再通过0x119记录的地址找到数据。
连续式读取的话比较方便,因为表头和数据都在一起,跳过表头可以直接找数据。采用分离式话需要间接的访问数据,先找到数据的表头,通过表头存储的数据的地址,然后再找到数据。
当加入的数据超过原有的存储空间时,连续式需要重新申请一块内存空间,把整个表头和数据都写入到一块新的数据存储区。
而分离式只需要把表头存储数据的地址改成新的存储地址即可。
考虑到之后数据的变化,一般采用分离式。
扩充的两种策略:
1.每次扩充固定数目的空间。
特点:节省空间,但是操作频繁,操作次数多。(以时间换空间)
2.每次扩充加倍
特点:减少扩充的执行次数,但会浪费存储空间。(以空间换时间,推荐用法)