(1)数组是将元素在内存中连续存放,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。
(2)数组必须实现定义固定长度,不能适应数据动态的增减情况。当数据增加,可能超过原先定义的元素个数,当数据减少时,造成内存浪费。
(3)数组从栈中分配空间,对于程序员方便快速,但自由度小。
链表从堆中分配空间,自由度大但是申请管理比较麻烦。
当进行数据查询时,数组可以直接通过下标迅速访问数组中元素。而链表则需要从第一个元素开始一直找到需要的元素位置,数组查询效率会比链表高。
当进行增加删除元素时,数组中增加一个元素,需要移动大量元素,删除同样需要移除大量元素去填掉被移动的元素。而链表只需改动元素中的指针即可实现增加或删除元素。
hash:具备数组快速查询又融合链表方便快捷的增加删除优势。简单说就是散列,即将输入的数据通过hash函数得到一个key值,输入的数据存储数组中下标为key值的数组单元去。 不同数据通过hash函数得到相同key值,就会产生hash冲突。解决办法:一种挂链式,即产生冲突的hash地址指向一个链表,将具有相同key值数据存到链表中;另一种是简历一个公共溢出区,将所有产生冲突的数据存放到公共溢出区。