简单了解下数据结构:
数据结构是为了解决实现对计算机数据的有效使用而开发的一系列'形式',它们服务于各类计算机的操作。不同的数据结构具有对应的使用场景,使用数据结构是为了降低各种算法计算所耗费的时间及内存占用、空间复杂度,使其达到最佳的任务执行效率。
常见的数据结构:
线性数据结构
a. 数组(Array)
b. 链表 (Linked List)
c. 栈(Stack)
d. 队列(Queue)
非线性数据结构
a. 树(Tree)
b. 堆(Heap)
c. 散列表(Hashing)
d. 图(Graph)
数组
数组用于存储相同类型的元素,并存储于内存中的连续地址空间内,长度不可变。
链表
链表以节点为单位,每个元素即为一个独立的对象,在内存空间地址上是不连续存储的。链表的节点对象具有两个成员变量:值val
,后继节点引用next
。
class ListNode {
int val; // 节点值
ListNode next; // 后继节点的对象的引用
ListNode(int x) {
val = x;
}
}
使用链表时则需要实例化每个节点,并手动标明各个节点的引用。
// 实例化节点
ListNode n1 = new ListNode(4); // 节点 head
ListNode n2 = new ListNode(5);
ListNode n3 = new ListNode(1);
// 构建引用指向
n1.next = n2;
n2.next = n3;