数据结构与算法之数组、链表

1、数组、链表是线性结构,与树、图(非线性结构)不同。
2、数组在许多强类型语言中是一样的意思,但是在一些弱类型语言中有所不同(比如在chrome的V8引擎之前js中的数组是没有数组这样的很规矩的样子的)。所以在js中我们应该尽量不使用for循环。
3、数组的规矩是很老实的:
首先就是我们在定义一个数组时,我们要给它一个长度,并且规定每位的占用空间,最后我们还要给它选一个连续的地址(比如在js中,我们定义一个很规矩的数组时应该是(int4Array(10)),它的意思是定义一个很规矩的数组,它的长度是10,每个空间大小是4位(随便提一句8位为一个字节)。而我们通常呢,是这样定义的(new Array() 或者[ ])).。
4、系统在查找数组中每一个数据时也是跟链表不一样的。因为数组的地址是连续的,所以系统查找时特别快,它只通过一些加减乘除就可以搞定(比如说我们要查找数组中的第4个元素,那么系统中就会用第一个元素的地址加上((4 -1)*每个元素占的空间大小),在这里呢,数组、链表一般我们找其中元素时,只要知道第一个元素地址就行了)。
5、数组还有就是缺点啦。第一、数组增删很麻烦,数组的增首先是另外向系统申请一个长度比原来大一的数组,然后再把想要添加的数据放上去,这就不像链表(它是不需要怎么麻烦的,链表首先把添加的结点地址指针指向添加位置的下一个节点地址,然后再把添加位置的前一个节点地址指针指向添加节点的地址即可),删同样在数组中也是很麻烦的,首先要把原数组中的数据清除,然后把原数组中的后面元素依次向前移动,然后向系统申请跟原数组长度一样的空间,再把原数组中数据拷贝,然后让新数组的长度减一即可,链表就很简单了(直接把要删除的节点的前一个节点的地址指针指向删除节点的下一个节点地址即可)。
6、所以说数组通过下标来查找元素的效率是很高的(只做加减乘除),而链表则就不应该通过下标来查找节点(不要常用for循环),因为在链表用下标来查找时(系统先通过读取第一个节点内容来找到第二个节点的地址,然后依次都是这样,就会造成系统的开销很大,不利于计算机的运行)。

好了,这就是今天小白龙的总结!激励自己,加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值