数组的特点
在内存中,数组是一块连续的区域,比如几个人一起电影院看电影的座位必须是连续的
数组需要预留空间,使用之前就要提前申请内存大小,可能会浪费空间
eag:比如10个人看电影座位必须连续的,这样才能保证在一起,如果有一个人没来就浪费了一个座位,如果多来一个人就得把第十一个位置上的人挪走,或者重新找11个人连续的座位,效率很低,如果没找到,就没法坐了
插入和删除效率低,因为数组是连续的,随机读取效率高,知道每一个数据的内存地址,可以直接找到给地址的数据,不以利扩展,数组定义空间不够就要重新定义数组
链表的特点
在内存中可以存在任意地方,不要求连续,每一个数据都保存了下一个数据的内存地址,通过这个地址可以找打下一个数据,第一个人知道第二个的座位号第三个人知道……
增加数据和删除数据都很容易
查找数据时候效率低,因为不具有随机访问性,查找必须从第一个位置开始
不用指定大小,扩展方便,链表大小不用定义,数据随意删除
各自优缺点
数组优点:随机访问性强,查找速度快 缺点:插入和删除效率低,可能浪费内存,内存空间要求高,必须连续内存空间,数组大小固定,不易动态扩展
链表优点:插入删除速度快,内存利用率高,不会浪费内存,大小没固定,扩展很灵活 缺点:不能随机查找,必须从第一个开始遍历,查找效率低