这个问题有点大,要了解它首先必须对系统内存的有所接触,
我也只是凭借粗浅的伎俩来谈谈对它们的体会(大家想笑的尽管,不要没事拿它偷着乐)
内存在提取数据时,首先在内存起始位置产生一个指针,它通过数据存储位置的偏移量来寻找地址,再读取数据.
(1)由于数组是连续的,因此只要寻找到数组的首地址返回,之后只要从数组的首地址产生用来定位的指针来寻找数
据地址,由于地址是连续的,而且通常偏移量都不大,因此数组对数据存取很方便.
(2)链表的空间是动态分配的,因此每个单元的地址是混乱的,因此每次对各单元地址的寻找都必须从用来动态分配
的内存空间首地址+偏移量开始查找,所以需要的操作就要比数组大得多.
// 从理论上链表可以达到数组一样的效率,不过必须分配的空间是从用来动态分配的内存空间首地址开始连续分配,大家可以用统计的方法来计算下数学期望.低~~~~~~~~相当的低~~~!!!!
我也只是凭借粗浅的伎俩来谈谈对它们的体会(大家想笑的尽管,不要没事拿它偷着乐)
内存在提取数据时,首先在内存起始位置产生一个指针,它通过数据存储位置的偏移量来寻找地址,再读取数据.
(1)由于数组是连续的,因此只要寻找到数组的首地址返回,之后只要从数组的首地址产生用来定位的指针来寻找数
据地址,由于地址是连续的,而且通常偏移量都不大,因此数组对数据存取很方便.
(2)链表的空间是动态分配的,因此每个单元的地址是混乱的,因此每次对各单元地址的寻找都必须从用来动态分配
的内存空间首地址+偏移量开始查找,所以需要的操作就要比数组大得多.
// 从理论上链表可以达到数组一样的效率,不过必须分配的空间是从用来动态分配的内存空间首地址开始连续分配,大家可以用统计的方法来计算下数学期望.低~~~~~~~~相当的低~~~!!!!