【转载】单链表与数组

Come from
http://www.cnblogs.com/ianthe/articles/3712895.html

 

          第一部分是首先说下数组与链表的区别~数组是大家常用的而熟知的,利用链表对比数组这样可以加深对链表的记忆。第二部分就是链表的代码实现,加深理解。

关于单链表:

1、概念

                在单链表中由于数据元素的存储空间一般不是连续的,因此为了完善的表示单链表的逻辑结构,其中每一个数据元素必须由两部分构成:一部分是数据元素中的数据值,另一部分是数据元素的地址值。这两部分信息构成了单链表的一个节点。因此,在用单链表表示线性表时,每个结点的存储地址是任意的,即存储位置是无序的。

2、结构

                对于单链表来说,每个节点的结构都是(data,next),节点中有两个部分:data域—存放结点值的数据域,next—存放结点的直接后续的地址的链域。

 

数组与链表的区别:

1、基于空间的考虑

            数组的存储空间是静态,连续分布的,初始化的过大造成空间浪费,过小又将使空间溢出机会增多。而链表的存储空间是动态分布的,只要内存空间尚有空闲,就不会产生溢出;链表中每个节点出了数据域外,还有链域(指向下一个节点),这样空间利用率就会变高。

2、基于时间的考虑

            具体的来说 数组查询快,插入与删除慢,单链表查询慢,插入与删除快。细说的话:数组中任意节点都可以在O(1)内直接存储访问,而链表中的节点,需从头指针顺着链表扫描才能获取到;而链表任意位置进行插入和删除,都只需要修改指针,而数组中插入删除节点,平均要移动一半的节点。

 

           (静态)数组从栈中分配空间,对于程序员方便快速,但是自由度小。链表从堆中分配空间,自由度大但是申请管理比较麻烦。

              数组中的数据在内存中按顺序存储的,而链表是随机存储的!

              要访问数组中的元素可以按下标索引来访问,速度快,如果对他进行插入操作的话,就得移动很多元素,所以对数组进行插入操作效率很低!

              由于链表是随机存储的,链表在插入,删除操作上有很高的效率(相对于数组),如果要访问链表中的某个元素的话,就得从链表的头逐个遍历,直到找到所需要的元素为止,所以链表的随机访问的效率就比数组要低。(这里会在下面代码中显示出来,在此做一个特殊的符号标记一下生气,嗯就是这个把)。

 
代码略。
记住 一个顺序存储,一个随机存储。
2015年的时候,我一定知道。贼熟悉。

温故而知新,古人不欺我。。。。。

转载于:https://www.cnblogs.com/xiapeng0701/p/7641742.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值