这里不讨论具体的实现细节,主要是转载这篇文章: 顺序表的原理与python中的list类型

原文就不贴过来了,总结一下:

  1. 确定数据类型的意义在于确定一个数据在内存中占据的空间大小以及如何解释一段内存的含义;
  2. 同类型数据在内存中连续存储时采用固定的偏移量来定位;
  3. 不同类型数据需要采用元素外置的方式,在顺序表里面只存储外置元素的指针;
  4. 顺序表需要保存【容量】以及【已占用】数据,这个“表头”可以放在顺序表中,也可以分离出来;
  5. 当顺序表的容量不够或者过多时,会自动扩容或者缩容。

再回到作者的结论:

list有以下几个特点:

1.元素有位置下标,以索引就可以直接取到元素  -->  连续的存储空间,以偏移量计算取得元素,不必遍历所有元素

2.元素无论如何改变,表对象不变,也就是其id不变  -->  分离式结构,表头和元素内容分开储存,这样在更改list时,表对象始终是同一个,只是其指向的地址不同

3.元素可以是任意类型  -->  既要要求是连续存储,又可以存储不同类型的数据,那么其用的就是元素外置的方式,存储的只是地址的引用

4.可以任意添加新元素  -->  要能不断地添加新元素,其使用了动态扩充的策略

最新文章

  1. # PHP - 使用PHPMailer发邮件
  2. 如何在HTMl网页中插入百度地图
  3. iPhone:4.7 5.5 4 3.5 对应的各个设备屏幕尺寸对应的像素及App上线信息
  4. osg中使用MatrixTransform来实现模型的平移/旋转/缩放
  5. NodeJS系列~目录
  6. SDP协议译稿(Part 1)
  7. Maven之 环境搭建
  8. 利用HTML5开发Android(1)---Android设备多分辨率的问题
  9. Ubuntu12.04更新源地址列表
  10. Linux 日常使用小记
  11. 细品 - 逻辑回归(LR)
  12. Mybatis源码之RoutingStatementHandler
  13. Java中输入判定的错误和纠正
  14. 2.matplotlib画散点图
  15. [USACO08OPEN]寻宝之路Clear And Present Danger
  16. 使用idea创建web项目
  17. Python3 卷积神经网络卷积层,池化层,全连接层前馈实现
  18. 洛谷.3807.[模板]卢卡斯定理(Lucas)
  19. 记一次Java加密加签算法到php的坑
  20. 【转】每天一个linux命令(11):nl命令

热门文章

  1. 排座位&&Little Elephant And Permutation——排列dp的处理
  2. discuz开发,登录次数过多,锁定解决方法
  3. 题解 P4092 【[HEOI2016/TJOI2016]树】
  4. powerdesigner中把表的描述复制到Name
  5. 【整理】explain、type、extra用法和结果的含义
  6. linux 下 mysql 主从配置
  7. oracle的小语句
  8. MakeDown的使用
  9. JVM调优总结(5):典型配置
  10. ArrayList既然继承自AbstractList抽象类,而AbstractList已经实现了List接口,那么ArrayList类为何还要再实现List接口呢?