算法图解笔记2-数组和链表

栏目: 编程工具 · 发布时间: 5年前

内容简介:我们继续上文的脚步,深入了解一下数组和链表。掌握它们之间的区别和联系,以及各自的使用场景,为后续的算法学习打好基础。为了更好的理解数组和链表,我们先来简单介绍一下计算机内存的工作原理。简单来说:计算机就像是很多抽屉的集合体,每个抽屉都有地址。

我们继续上文的脚步,深入了解一下数组和链表。掌握它们之间的区别和联系,以及各自的使用场景,为后续的算法学习打好基础。

一、计算机内存的工作原理

为了更好的理解数组和链表,我们先来简单介绍一下计算机内存的工作原理。

简单来说:计算机就像是很多抽屉的集合体,每个抽屉都有地址。

需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式:数组和链表。

二、数组

我们先不看概念,来个小例子简单认识一下。

假设我们要编写一个管理待办事项的应用程序,为此需要将这些待办事项存储在内存中。我们先将待办事项存储在数组中。使用数组意味着所有待办事项在内存中都是相连的(紧靠在一起的)。

算法图解笔记2-数组和链表

现在假设你要添加第四个待办事项,但后面的那个抽屉放着别人的东西!在这种情况下,你需要请求计算机重新分配一块可容纳 4 个待办事项的内存,再将所有待办事项都移到那里。

那么问题来了,如果我又有了第 5 个待办事项,这时候,又得进行一次大转移。

那么有没有什么解决方案呢?答案是肯定的,但是并不完美。譬如,我们直接申请 10 个内存单元,这样就可以继续6,7,8,9,10。

这是一个不错的权变措施,但是它存在如下两个缺点:

1.你额外请求的位置可能根本用不上,这将浪费内存。你没有使用,别人也用不了。

2.待办事项超过 10 个后,你还得转移。

看起来我们的方案并不完美,那么有什么好的办法吗?

三、链表

链表中的元素可存储在内存的任何地方。

我们继续用上面的例子:

算法图解笔记2-数组和链表

链表的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。

算法图解笔记2-数组和链表

这犹如寻宝游戏。你前往第一个地址,那里有一张纸条写着“下一个元素的地址为123”。因此,你前往地址123,那里又有一张纸条,写着“下一个元素的地址为847”,以此类推。在链表中添加元素很容易:只需将其放入内存,并将其地址存储到前一个元素中。

只要有足够的内存空间,就能为链表分配内存。

链表的优势在插入元素方面,那数组的优势又是什么呢?


以上所述就是小编给大家介绍的《算法图解笔记2-数组和链表》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP 5权威编程

PHP 5权威编程

(美)古曼兹等 / 简张桂 / 电子工业出版社 / 2007-12 / 90.00元

《BRUCE PERENS开源系列丛书•PHP 5权威编程》为大家全面介绍了PHP 5中的新功能、面向对象编程方法及设计模式,还分析阐述了PHP5中新的数据库连接处理、错误处理和XML处理等机制。希望能够帮助读者系统了解、熟练掌握PHP,最大程度地挖掘:PHP的潜力,以更低的成本搭建更加稳健、高效的PHP应用。 近年来,随着使用PHP的大流量网站逐渐增加,企业在使用PHP的时候开始面临新的问......一起来看看 《PHP 5权威编程》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具