//单链表LinkedList的原理
class Node
{
String data; // 存放节点数据本身
Node next; // 存放指向下一个节点的引用
public Node(String data)
{
this.data = data;
}
}
public class NodeTest
{
public static void main(String[] args)
{
Node node1 = new Node("node1");
Node node2 = new Node("node2");
Node node3 = new Node("node3");
//链接链表
node1.next = node2;
node2.next = node3;
System.out.println(node1.next.next.data);
System.out.println("---------------------");
//在第一和第二中间,插入新链表
Node node4 = new Node("node4");
node1.next = node4;
node4.next = node2;
System.out.println(node1.next.next.next.data);
System.out.println("--------------------");
//删除新链表
node1.next = node2;
node4.next = null;
System.out.println(node1.next.next.data);
}
}
//双向循环链表LinkedList的原理,还有单向循环链表没有列出来,其实很简单
class Node2
{
Node2 previous;
String data;
Node2 next;
public Node2(String data)
{
this.data = data;
}
}
public class Node2Test
{
public static void main(String[] args)
{
Node2 node1 = new Node2("node1");
Node2 node2 = new Node2("node2");
Node2 node3 = new Node2("node3");
//链接链表
node1.next = node2;
node2.previous = node1;
node2.next = node3;
node3.previous = node2;
node3.next = node1;
node1.previous = node3;
System.out.println("--------------------");
//插入新链表
Node2 node4 = new Node2("node4");
node1.next = node4;
node4.previous = node1;
node4.next = node2;
node2.previous = node4;
System.out.println("--------------------");
//删除新链表
node1.next = node2;
node2.previous = node1;
node4.previous = null;
node4.next = null;
}
}
//LinkedList链表的使用
import java.util.LinkedList;
public class LinkedListTest1
{
public static void main(String[] args)
{
LinkedList list = new LinkedList();
list.add("F");
list.add("B");
list.add("D");
list.add("E");
list.add("C");
list.addLast("Z");
list.addFirst("A");
list.add(1, "A2");
System.out.println("最初的集合:" + list);
list.remove("F");
list.remove(2);
System.out.println("变化之后的集合:" + list);
Object value = list.get(2);
list.set(2, (String)value + "changed");
System.out.println("最后的集合:" + list);
}
}
//用LinedList链表实现队列原理:先进先出
import java.util.LinkedList;
public class MyQueue
{
private LinkedList list = new LinkedList();
//插入一个对象
public void put(Object o)
{
list.addLast(o);
}
//得到一个对象
public Object get()
{
return list.removeFirst();
}
//判断队列是否为空
public boolean isEmpty()
{
return list.isEmpty();
}
public static void main(String[] args)
{
MyQueue myQueue = new MyQueue();
myQueue.put("one");
myQueue.put("two");
myQueue.put("three");
System.out.println(myQueue.get());
System.out.println(myQueue.get());
System.out.println(myQueue.get());
System.out.println(myQueue.isEmpty());
}
输出结果:
one
two
three
true