链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两
个域,一个域用于数据元素的存储,另一个域是指向其他单元的指针。这里具有一个数据域
和多个指针域的存储单元通常称为 结点(node)
一种最简单的结点结构如图 3-5 所示,它是构成单链表的基本结点结构。在结点中数据
域用来存储数据元素,指针域用于指向下一个具有相同结构的结点。
在 Java 中没有显式的指针类型,然而实际上对象的访问就是使用指针来实现的,即在
Java 中是使用对象的引用来替代指针的。因此在使用 Java 实现该结点结构时,一个结点本
身就是一个对象。结点的数据域 data 可以使用一个 Object 类型的对象来实现,用于存储任
何类型的数据元素,并通过对象的引用指向该元素;而指针域 next 可以通过节点对象的引
用来实现。
public class LinkedList {
private Node head = new Node(null);
private int size;
public Node getHead() {
return head;
}
public void setHead(Node head) {
this.head = head;
}
public void add(Node node){
Node p = head; //定义临时变量节点
while(p.getNext()!=null){
p = p.getNext();
}
p.setNext(node);
size++;
}
public void add(int i,Node node){
Node p = head;
while(i>=0){
p = p.getNext();
i--;
}
Node nextnode = p.getNext();
p.setNext(node);
node.setNext(nextnode);
size++;
}
public void delete(int i) {
Node p = head;
while(i>0){
p = p.getNext();
i--;
}
p.setNext(p.getNext().getNext());
size--;
}
public Node getNode(int index){
Node p = head;
while(index>=0){
p = p.getNext();
index--;
}
return p;
}
public int size(){
return size;
}
}