顺序表的结构与实现
8 | 容量 |
---|---|
4 | 元素个数 |
1328 | 数据区 |
693 | 数据区 |
2529 | 数据区 |
154 | 数据区 |
一个顺序表包含表头信息和数据区。
在构造顺序表的时候一开始要告诉操作系统你要多大的存储空间,即数据规模多大。就像这个表格,一开始向内存申请了8个数的存储空间,存了4个数,容量表示这个顺序表能存多少,元素个数表示当前存了多少。
顺序表的结构
一体式结构:存储表信息的单元和元素存储区以连续的方式安排在一块存储区里作为一个连续的存储空间,表的起始信息要跳过表头。
一体式结构整体性强,易于管理。但如果要增加数据,原来数据区不够存储的话,就必须要重新申请一个新的足够的存储区。再把原先的存储空间释放掉。替换的时候表头部分也要一起替换。表头的起始地址也发生变化。
分离式结构:表头信息用单独的存储单元存储起来,除了存容量和元素个数之外,还有真实的元素存储区的地址信息。数据替换的时候存储区的数据部分申请一个新的存储空间并将数据重新存放,释放掉原来的数据存储空间,表头部分不用替换,只需要将指向地址替换为新的存储区的地址。表头的起始地址不变。
通常都使用分离式。
元素存储区的扩充
- 每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种成为线性增长。
特点:节省空间,扩充次数频繁。 - 每次扩充容量加倍。如第一次申请4个,第二次申请8个,第三次申请16个。。。
减少了扩充次数,但可能会浪费空间资源。
用空间换时间