链表的使用

来源:互联网 发布:剑灵龙男捏脸数据大全 编辑:程序博客网 时间:2024/06/05 09:24

一.链表的概念

     在数组列表的文章中我们已经提到了链表,今天来讲一下链表。

     首先再回顾一下链表列表与数组列表的关系。

 

    链表列表:链表是一块不连续的动态空间,长度可变;链表需要按顺序检索节点,效率低;链表的优点是可以快速插入和删除节点,大小动态分配,长度不固定。链表不存在越界问题。

数组列表:数组是一块连续的空间,声明时长度就需要固定。数组的优点是速度快,数据操作直接使用偏移地址。数组有越界问题。

 

从以上看到两者都有优缺点。

 

二.如何实现链表

链表的实现和列表的实现显然是不同的,列表的实现我们用到了数组,而在链表的实现中,我们不会用到数组来保存数据,取而代之的,我们用一个“节点”类来保存我们的数据。

 

现在我们先给出一个大概的图形,便于读者理解

blob.png


(注:本篇文章中所讲的链表是单向链表,我们还可以编写双向链表)

在图中,一个链表中有很多的节点(如箭头所示),在每一个节点中有两个”框框“,左边存放数据,右边用于指向下一个节点。

 

现在我们来看一下定义节点类的代码:

blob.png

如上图代码所示,根据我们最初给的图片,我们现在就应该在节点类中定义两个属性:

       1.存放的数据及其类型(代码中定义了泛型E

       2.下一个节点     

               节点类中还有三个构造方法:

一个不传递任何参数,一个只传递数据,还有一个传入下一个节点和数据

 

编写好了节点类,接下来开始编写我们的链表列表类,链表列表中所应该有的方法无非就那么几个,增、删、改、查。那么我们应该在链表列表内定义什么属性呢?

 

现在我们来看代码图:

blob.png

即我们需要在链表类里面定义三个属性。

 

接下来就是具体的方法了,具体方法见下代码图:

blob.png

blob.png

blob.png

blob.png

这样我们的链表就能实现一些基本的功能了!(备注:作者所写代码并不是最完美的,代码的精简度没有达到最大,但是容易理解,如果读者有更好精简又容易理解的代码,望不吝赐教~)。

0 0
原创粉丝点击