链表

一、数组

最常见的数据结构是数组,但是数组结构是有一定缺陷的,

无序数组:搜索是低效的,

有序数组:插入效率低,

而且一个数组创建后,它的大小是不可变的。

二、链表

链表是继数组之后使用最广泛的通用数据结构,他可以取代数组,成为其他数据结构的基础,比如栈和队列。除非需要频繁通过下标访问各个数据,否则在很多地方都可以用链表代替数组。最常见的链表有单链表,双端链表,有序链表,双向链表和有迭代器的链表。

三、链表的结构

 在链表中,每个链结点都包含数据项和指向下一个链结点的引用(next),链表本身有一个字段指向对第一个链结点的引用。

 

public class Link {
    public int data1;//data
    public double data2;//data
    public Link next;//指向下一个链结点
}

这种类定义叫做“自引用式”,即它包含了一个和自己类型相同的字段(next)。在java中Link对象并没有真正包含另外一个Link对象。类型为Link的next字段,仅仅是另外一个Link对象的引用,而不是一个对象。

引用是计算机中内存的地址,它会告诉你对象在哪里。在给定的计算机/操作系统中,所有引用,不管它指向谁,大小都是一样的。

需要注意的是,在java语言中,例如int 和double等基本数据类型的储存于对象储存完全不同。含有基本数据类型的字段不是引用,而是实实在在的数值

double num=10.00

num这个变量在内存中创建了空间,并把10.00数字放在其中。

三、链表和数组的区别

重点来啦!!用一句话来概括就是链表是关系,而不是位置。

在数组中,每一项占一个特定的位置,我们可以通过下标来访问数据。数组就像一排排房子,我们可以通过地址,找到我们想要找到的“人”。

在链表中,寻找一个特定元素的方法就是沿着某个元素的链一直向下寻找,它很像人们的关系。如果你要找C,但是你并不认识C,你只有通过B才能找到C。这样A—B—C,通过B线索找到了C。即链表不能直接访问到数据项,必须使用数据之间的关系定位它。

 

posted @ 2017-03-16 21:51  一只会编程的猫  阅读(281)  评论(0编辑  收藏  举报