前言
那么此时,我们就思考,有没有一种数据结构,可以随用随取,插入/删除数据可以不移动元素?👉👉
于此Java集合中又引入了链表结构.
链表的概念及结构
概念
结构
链表的实现
创建LinkedList类 实现IList接口
//模拟实现LinkedList链表
public class MySingleLinkedList implements IList {
//定义一个静态内部类 --节点
static class LinkedNode {
public int value;//数值域
public LinkedNode next;//next域 存放的是节点的地址
public LinkedNode(int value) {
this.value = value;
}
}
public LinkedNode head;//head是 链表的头节点 null
public void createList() {
LinkedNode node1 = new LinkedNode(12);
LinkedNode node2 = new LinkedNode(23);
LinkedNode node3 = new LinkedNode(34);
LinkedNode node4 = new LinkedNode(45);
node1.next = node2;//表示node1的下一个节点是node2 node2这个引用存储了地址
node2.next = node3;
node3.next = node4;
this.head = node1;//head指向了第一个节点的地址
}
@Override
public void display() {
LinkedNode cur = head;//定义临时变量
while(cur != null) { //当头节点为null时 算把所有节点都遍历完了
System.out.print(cur.value + " ");
cur = cur.next;//从第一个节点走到下一个节点
}
}
@Override
public int size() { //计算有多少个节点
int count = 0;
LinkedNode cur = head;
while(cur != null) {
count ++;
cur = cur.next;
}
return count;
}
}
public interface IList {
void addFirst(int data);
void addLast(int data);
void addIndex(int index,int data);
boolean contains(int key);
void remove(int key);
void removeAllKey(int key);
int size();
void clear();
void display();
}
解析