单向链表是指每一个节点内存在一个指向下一个节点的指针,java中就是节点存在指向下一个节点的对象引用
下面是Node节点类
public class Node {
private Object object;
private Node next;
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
单向链表实现类
/**
* @author wcx
*/
public class LinkedNode {
private Node head;
private int nodeIndex = 0;
public LinkedNode() {
head = new Node();
}
/**
* 获取下一个元素
* @return
*/
public Node next() {
Node node = select(nodeIndex);
nodeIndex++;
return node;
}
/**
* 判断是否存在下一个元素
* @return
*/
public boolean hasNext() {
Node select = select(nodeIndex);
if (select == null)
return false;
return select.getNext() != null;
}
public void add(Node next) {
Node last = last();
last.setNext(next);
}
public void delete(int index) {
int nodeIndex = -1;
Node node = head;
while (node.getNext() != null) {
nodeIndex++;
if (nodeIndex == index) {
Node next = node.getNext().getNext();
node.setNext(next);
}
node = node.getNext();
if (node == null)
return;
}
}
public Node select(int index) {
int nodeIndex = -1;
Node node = head;
while (node.getNext() != null) {
if (nodeIndex == index)
return node;
node = node.getNext();
nodeIndex++;
}
return null;
}
/**
* 查找到最后一个链表元素
* @return
*/
private Node last() {
Node node = head;
while (node.getNext() != null)
node = node.getNext();
return node;
}
/**
* 打印链表信息
*/
public void printf() {
if (head.getNext() == null)
return;
Node node = head.getNext();
System.out.println("================begin====================");
while (node.getNext() != null) {
System.out.print(node.getObject() + " ");
node = node.getNext();
}
System.out.println(node.getObject());
}
}