链表
链表也是线性数据结构,与数组相比,在内存分配、内部结构及数据插入和删除的操作上均有不同。 链表用途广泛,适用于许多通用的数据库,也可以取代数组,作为其他存储结构的基础。 在链表中,每个数据项都被包含在链节点中,一个链节点是某个类的对象,这个类叫做Link。因为一个 链表中有许多类似的链节点,所以要用一个不同于链表的类来表达链节点。每个Link对象都包含一个对 下一个链节点引用的字段,即next,但是链表本身的对象中有一个字段指向对第一个链节点的引用。
引用的区别
在java中,Link对象并没有真正包含另外一个Link对象,类型为Link的next字段仅仅是对另外一个Link 对象的引用,而不是一个对象。一个引用是一个对某个对象的参照数值,它是一个计算机内存中的对象 地址,并不需要知道它的具体值,在给定的计算机系统中,所有的引用,不管指向谁,大小都是一样 的,因此对于编译器来说,知道这个字段的大小并由此构造出整个Link对象,是没有问题的。在java 中,这些基本类型的字段不是引用,而是实实在在的数值。
链表的每个节点包含着数据和指向后续节点的指针,还包括一个头指针,它指向链表的第一个元素,但 当链表为空时,它指向Null或无具体内容。 链表一般用于实现文件系统,哈希表和邻接表。
单链表的操作: 在链表头插入一个数据项; 在链表头删除一个数据项; 遍历链表显示它的内容。
双向链表 双向链表新增了一个特性,即对最后一个链节点的引用,就像对第一个链节点的引用一样,对最后一个 链节点的引用允许像在表头