上图左侧只能存储同一类型的数据连续存储在列表中,既整型和整型,浮点型和浮点型,同类型的存储大小是一样的,因为是连续存储而且存储空间的大小是一样则可以通过索引值获取数据。
右侧则可以通过在列表中存储数据的内存地址来解决存储不同数据类型的问题,因为内存地址的大小是固定的,通过列表的索引值获取到数据的内存地址,然后再通过内存地址获取数据。
左边是一体式,表头和元素地址是连续存储的,可以通过偏移量既索引值直接跳过表头查找元素,直接访问。
右边是分离式,表头和元素的内存地址是分离的,列表先通过表头找到表头的相关信息,然后再通过表头知道元素的内存地址,来间接访问。
建立一个顺序表首先需要向系统申请多大的内存空间(表头),既这个表存储几个元素的最多个数和目前这个表当前的元素个数,,如果你先申请了8个存储元素的空间,实际上你有九个元素需要存储,则会出现有一个元素和另外八个元素不连续存储
所以只能向操作系统重新申请内存空间存储数据,把原表内的数据迁移到新表,且原表的数据内存地址会改变,原表的内存空间会被释放。
如果此时的结构是一体式,则表头的内存地址也要改变。
分离式则只需要把指向数据区的内存地址改变就可以,表头地址不需改变。