Java中实现链表和双向链表[Java编程]
本文“Java中实现链表和双向链表[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
链表是一种重要的数据构造,在程序计划中占据很重要的地位.C语言和C++语言中是用指针来实现链表构造的,由于Java语言不供应指针,所以有人认为在Java语言中不能实现链表,其实不然,Java语言比C和C++更简单实现链表构造.Java语言中的对象引用实际上是一个指针(本文中的指针均为概念上的意义,而非语言供应的数据范例),所以我们可以编写这样的类来实现链表中的结点.
class Node
{
Object data;
Node next;//指向下一个结点
}
将数据域定义成Object类是因为Object类是广义超类,任何类对象都可以给其赋值,增添了代码的通用性.为了使链表可以被拜候还需求定义一个表头,表头必须包含指向第一个结点的指针和指向当前结点的指针.为了便于在链表尾部增添结点,还可以增添一指向链表尾部的指针,别的还可以用一个域来表示链表的大小,当调用者想得到链表的大小时,没必要遍历整个链表.下图是这种链表的表示图:
链表的数据构造
我们可以用类List来实现链表构造,用变量Head、Tail、Length、Pointer来实现表头.存储当前结点的指针时有一定的本领,Pointer并非存储指向当前结点的指针,而是存储指向它的前趋结点的指针,当其值为null时表示当前结点是第一个结点.那么为什么要这样做呢?这是因为当删除当前结点后仍需保证剩下的结点构成链表,假如Pointer指向当前结点,则会给操作带来很大艰难.那么若何得到当前结点呢,我们定义了一个办法cursor(),返回值是指向当前结点的指针.类List还定义了一些办法来实现对链表的基本操作,通过应用这些基本操作我们可以对链表举行各种操作.比方reset()办法使第一个结点成为当前结点.insert(Object d)办法在当前结点前插入一个结点,并使其成为当前结点.remove()办法删除当前结点同时返回其内容,并使后来继结点成为当前结点,假如删除的是最后一个结点,则第一个结点变成当前结点.
以上是“Java中实现链表和双向链表[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |