1、链表简介
链表是线性表的一种,但是在存储上和线性表结构的数组有很大的差异,数组的存储在内存上是一块连续的空间,链表却可以理由分散空间进行存储,因此,当内存大小不够,或者内存碎片过多,而此时又需要为一个长度很大数组分配空间,可能就会出现内存不够,触发jvm提起回收内存的情况,甚至抛出OutOfMemoryError异常。
但是链表就不用担心这一点,因为无需向数组一样,提前开辟好一块内存连续的空间。链表的长度是动态增加的,因此也称为动态数据结构,占用的内存可以充分利用内存碎片来完成。
链表数据结构的核心就是下面这样的:
public class ListNode {
int val;
ListNode next;
ListNode pre;
ListNode(int x) { val = x; }
}
包含一个保存实际数值的val,还有指向上一个、下一个链表节点的引用或者是指针(java为引用,c为指针ÿ