单链表时间复杂度
1.单链表头插/头删和尾插/尾删比较高效,时间复杂度为O(1)
2.单链表除上述操作其他时间度都为O(N)
注:其中头删和尾删要想实现时间复杂度为O(1)代码需要优化,具体方法就是起始创建一个尾结点每次记录最后数据
单链表代码相关代码
// 一个节点
class Node {
public int data; // 数据
public Node next = null; // 下一个节点的位置
public Node(int data) {
this.data = data;
}
}
public class LinkedList {
// 管理所有的链表节点. 只需要记录头结点的位置即可
// 初始情况下 head 为 null, 此时表示空链表(不带傀儡节点)
private Node head = null;
// private Node tail = null; // 优化尾插
// private int size = 0; // 优化获取长度
public void addFirst(int data) {
// 1. 根据 data 值构建一个链表节点(Node对象)
Node node = new Node(data);
// 2. 如果链表为空链表
if (head == null) {
head = node;
return;
}
// 3. 如果链表不是空链表
node.next = head;
head = node;
}
public void addLast(int data) {
// 1. 根据 data 构造一个 Node 对象
Node node = new Node(data);
// 2. 如果链表为空链表
if (head == null) {