数组 链表 哈希表 区别详解

一、数组

1、简介

数组将元素在内存中连续存放,存储区间是连续的。

2、举例

体育课上,老师说:同学们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组。

3、优缺点

1.数组必须事先定义固定的长度,不能适应数据动态的增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。

2.数组从栈中分配空间,对于程序员方便快速,但是自由度小。

3.当进行数据查询时,数组可以直接通过下标迅速访问数组中的元素。

4.当进行增加或删除元素时,在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样,如果想删除一个元素,需要移动大量去填掉被移动的元素。

         

二、链表

1、简介

链表存储区间离散,占用内存比较宽松。通过存在元素中的指针联系到一起

2、举例

体育课上,老师说,同学们每个人记住自己前面的人和后面的人,然后老师只知道第一人是谁。 然后你们各自由活动,老是要找某一个人,每次都是从第一个开始往自己身后的人开始传达,这就是链表。

3、优缺点

1.链表动态地进行存储分配,可以适应数据动态地增减的情况。链表从堆中分配空间,自由度大但是申请管理比较麻烦。​​​​​​​

2.当进行数据查询时,链表需要从第一个元素开始一直找到需要的元素位置。

3.当进行增加或删除元素时,链表只需改动元素中的指针即可实现增加或删除元素。

       

       

三、哈希表

1、简介

散列法​​​​​​​,是数组和链表的结合体

2、举例

即将输入的数据通过hash函数得到一个key值,输入的数据存储到数组中下标为key值的数组单元中去

3、优缺点

1.既能具备数组的快速查询的优点,又能融合链表方便快捷的增加删除元素的优势。

2.不相同的数据通过hash函数得到相同的key值。这时候,就产生了hash冲突。解决hash冲突的方式有两种。一种是挂链式,也叫拉链法。挂链式的思想在产生冲突的hash地址指向一个链表,将具有相同的key值的数据存放到链表中。另一种是建立一个公共溢出区。将所有产生冲突的数据都存放到公共溢出区,也可以使问题解决。

         

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值