C/C++中对链表的实现以指针作为媒介,而在摒弃指针概念的Java中链表的实现类似于静态链表,结点抽象为类,每个结点均为对象,同时有多个结点组成的链表也抽象为类,链表类中包括头结点以及对链表的操作
自定义双向链表Java代码
package bao_1;
//双向链表
class Node {
Node next;
Object value;
Node prior;
}
public class Link_list {
Node front;
Node rear;//可有可无
private int size;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
// 在末尾插入元素
public void add(Object x) {
Node n = new Node();
n.next = null;
n.value = x;
n.prior = null;
if (front == null) {
front = n;
rear = n;
size++;
} else {
n.prior = rear;
rear.next = n;
rear = n;
size++;
}
}
public void move(Object x) {
}
//获取index处值
public Object get(int index) {
Node p = front;
while (p != null) {
for (int i = 0; i < index; i++) {
p = p.next;
}
}
return p.value;
}
public static void main(String[] args) {
Link_list list = new Link_list();
list.add("asdf");
System.out.println(list.size);
}
}
调用LinkedList类(实际编程中直接调用库类即可)
package bao_1;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class lingk2 {
//因为List类继承自object类,故什么东西都可以放入
public static void main(String[] args) {
List list=new LinkedList();
List list2=new ArrayList();
list.add("qwe");
list.add("fsd");
list.add("fghbbd");
list.add("jtyjy");
list.add(2, 123);
System.out.println(list.get(2));
System.out.println(list.get(3));
}
}