链表的基础知识
链表结构
节点
数据域
指针域
链状结构
通过指针域的值形成一个线性结构
访问链表的时间复杂度
链表不适合快速定位的查找,适合动态的插入和删除的应用场景
查找节点 O(N)
插入节点 O(1)
删除节点 O(1)
JAVA代码实现
通过实例对象实现
class ListNode1 {
// 数据域
int val;
// 指针域
ListNode1 next;
public ListNode1(int val) {
this.val = val;
this.next = null;
}
}
使用两个数组来实现
class ListNode2 {
// 数据域
int[] data;
// 指针域
int[] next;
public ListNode2(int len){
data = new int[len];
next = new int[len];
}
/**
* ind指向的下一个位置为 p 其值为val
* @param ind
* @param p
* @param val
*/
public void add(int ind, int p, int val){
next[ind] = p;
data[p] = val;
}
}