顺序存储虽然是一种很有用途的存储结构,但也有很多局限性:
(1)若要为线性表扩充存储空间,则需重新创建一个地址连续的更大的存储空间,并把原有的数据元素都复制到新的存储空间中;
(2)因为顺序存储要求逻辑上相邻的数据元素,在物理存储位置上也是相邻,这就使得增删的数据元素会引起平均约一半的数据元素的移动。
针对这些情况,我们通常采用链式存储结构。
链式存储结构不要求逻辑上相邻的数据元素在物理上也是相邻的,它是一组地址任意的存储单元来存放数据元素的值。
一、单链表
链表中每个结点包含存放数据元素值的数据域和存放指向逻辑相邻结点的指针域。若结点中只包含一个指针域,则称链表为单链表(Single Linked List)
1、结点类的描述
data | next |
结点类的结构图
package com.slowly.xxb;
public class Node {
private Object data ;
private Node next ;
public Node(){
this (null , null);
}
public Node(Object data , Node next) {
this .data = data;
this .next = next;
}
public Object getData(){
return data ;
}
public Node getNext(){