顺序表是指用一组地址连续的存储单元依次存储数据元素的线性结构。
Array是固定大小的顺序表,定义为:
int[] arr = new int[] {1,2,3,4,5};
ArrayList是可以动态扩容的顺序表。
单链表节点
public class ListNode {
int val; // 值
ListNode next; // 指向下一个节点
ListNode(int x) { val = x; }
}
双链表节点
public class ListNode {
int val; // 值
ListNode next; // 指向下一个节点
ListNode pre; // 指向上一个节点
ListNode(int x) { val = x; }
}
此类实现 Deque
接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。
Queue
和Deque
接口都是队列的数据结构
Queue
是普通队列的接口Deque
是双端队列的接口ArrayDeque是Java集合框架中的一个双端队列(Deque
)实现类。它基于数组实现,可以在两端高效地插入和删除元素。
实现原理
front
和rear
)来标记队列的头部和尾部。当向队列中添加元素时,rear指针向后移动;当从队列中删除元素时,front指针向后移动。如果数组满了,ArrayDeque会自动扩容。LinkedList也是Java集合框架中的一个双端队列(Deque
)实现类。它基于链表实现,可以在任意位置高效地插入和删除元素。
实现原理
同上,只是操作API方法的不同
同上,只是操作API方法的不同
树又分为:二叉树、二叉搜索树、平衡二叉树、红黑树、B树等。
public class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {val = x;}
}
图有节点和边组成,实现的方式有:
Map<Integer, List<int[]>> graph = new HashMap();