数据结构可视化演示

动态数组 (ArrayList)

动态数组说明

动态数组在内存中是连续存储的,支持 O(1) 的随机访问。当容量不足时,会自动扩容(通常是原来的 2 倍),扩容操作的时间复杂度为 O(n)。

访问 O(1)
插入 O(n)
删除 O(n)
扩容 O(n)

单向链表 (LinkedList)

链表说明

链表的节点在内存中分散存储,每个节点包含数据和指向下一个节点的指针。插入和删除操作只需修改指针,时间复杂度为 O(1),但访问需要从头遍历,时间复杂度为 O(n)。

访问 O(n)
插入 O(1)
删除 O(1)
空间 O(n)

栈 (Stack) - 后进先出

栈顶指针 (top): 0

栈说明

栈是一种后进先出 (LIFO) 的数据结构,只能在栈顶进行插入和删除操作。常用于函数调用栈、表达式求值、括号匹配等场景。

入栈 O(1)
出栈 O(1)
查看栈顶 O(1)

队列 (Queue) - 先进先出

队头: - 队尾: -

队列说明

队列是一种先进先出 (FIFO) 的数据结构,元素从队尾入队,从队头出队。常用于任务调度、消息队列、BFS 遍历等场景。

入队 O(1)
出队 O(1)
查看队头 O(1)

二叉搜索树 (BST)

二叉搜索树说明

二叉搜索树的左子树所有节点值小于根节点,右子树所有节点值大于根节点。中序遍历可得到升序序列。平均时间复杂度为 O(log n),最坏情况(退化为链表)为 O(n)。

查找(平均) O(log n)
插入(平均) O(log n)
删除(平均) O(log n)
最坏 O(n)