LinkedList
链表是最简单的动态数据结构,是真正的动态数据结构
- 链表的特点:
数据存储在“结点”中
优点:不需要处理固定容量的问题,实现了真正的动态; 增删效率高
缺点:丧失了随机访问的能力,查询效率低,线程不安全
单向链表的结点存储着下一个结点的信息
双向链表的节点中存储着下一个结点的信息和上一个结点的信息
单向链表:
双向链表:
循环链表:
使用数组实现LinkedList
创建结点
数据存储于结点中
public class MyLink {
static class Node{
/* 真正的数据*/
Object data;
/*下一个节点*/
Node next;
public Node(){
this(null);
}
public Node(Object data){
this.data = data;
this.next = null;
}
@Override
public String toString(){
return "node{data="+data+
"}";
}
}
/**
* 头结点
*/
private Node head;
/**
* 链表中节点的个数
*/
private int size;
public MyLink() {
this.head = null;
this.size = 0;
}
/**
* 获取链表中元素的个数
* @return
*/
public int getSize() {
return size;
}
/**
* 判断链表是否为空
* @return
*/
public boolean isEmpty(){
return this.head==null;
}
添加元素
向头部添加结点
不使用虚拟头结点: