在C/C++语言中,采用指针类型存储地址来实现链式存储结构。Java语言不支持指针类型,提供引用方式保存包括地址在内的结构化信息。引用是比指针更健壮、更安全的链接方式,它不仅实现了指针的所有功能,而且避免了因指针使用不当产生的不安全性。因此,采用Java语言的引用类型可以很好地实现链式存储结构。
单链表结点类Node声明如下:
- package dataStructure.linearList;
- public class Node<E>
- {
- public E Data;
- public Node<E> Next;
- public Node(E data,Node<E> next)
- {
- this.Data = data;
- this.Next = next;
- }
- public Node(E Data)
- {
- this(Data,null);
- }
- public Node()
- {
- this(null,null);
- }
- }
Node<E>类有两个成员变量,data表示结点的数据域,保存数据元素本身,数据类型是E;next表示结点的地址域,保存后继结点的地址。Node类中成员变量next的数据类型是Node类自己,Node类是“自引用的类”。所谓自引用的类(self-referential calss),是指一个类声明包含一个引用当前类的对象的成员变量。
建立并链接结点的语句如下:
- import dataStructure.linearList.Node;
- public class MainForm
- {
- public static void main(String args[])
- {
- Node<String> CC =new Node<String>("C");
- Node<String> BB =new Node<String>("B",CC);
- Node<String> AA =new Node<String>("A",BB);
- System.out.println(AA.Data);
- System.out.println(AA.Next.Data);
- System.out.println(AA.Next.Next.Data);
- }
- }
单链表的头指针head也是一个结点引用,声明如下:
- Node<E> head = null;
当head ==null时,表示空单链表。