目录结构:两个类,Node是链表节点的属性的方法。Link是多个节点来连接在一起的属性和方法。
Node:
package myLinklist;
public class Node {
/**
*因暂时无法获取node的地址信息,
* 所以将前后索引位置直接存为前后节点
*/
private Node pre;//这是一个节点
private Object mate;//这是节点中存的数据
private Node next;//这也是一个节点
public Node getPre() {
return pre;
}
public void setPre(Node pre) {
this.pre = pre;
}
public Object getMate() {
return mate;
}
public void setMate(Object mate) {
this.mate = mate;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
**
Link:
**
package myLinklist;
public class Link {
/**
*用第一个节点和最后一个节点来追踪链表中的其他节点
*/
private Node first;
private Node last;
int count;
public void add(Object o) {
if (first == null) {//判断是否是第一个节点
Node node = new Node();
node.setPre(null);
node.setMate(o);
node.setNext(null);
first = node;//当前为添加的第一个节点时,那么first和last都为第一个节点
last = node;
} else {
Node node = new Node();//不是第一个节点
node.setPre(last);
node.setMate(o);
node.setNext(null);
last.setNext(node);//如果当前添加的时第3个节点,那么此时last还是第2个节点,让第2个节点的后索引指向第3个节点。
last = node;//将last指向新加入的节点,成为最后一个节点
}
count++;
}
public int size() {
return count;
}
public Object mate(int index) {
Node node = new Node();
for (int i = 0; i < index; i++) {
node = first.getNext();
}
return node.getMate();
}
}
class Test {
public static void main(String[] args) {
Link link = new Link();
link.add("a");
link.add("b");
System.out.println(link.size());
System.out.println(link.mate(0));
}
}