链表
- 链表是以节点的方式来存储,是链式存储
- 基本结构:data域, nextNode域(指向下一个节点)
- 链表不是连续存储的
- 链表分带头节点和没有带头节点
单链表
- 链表中每个链节点中仅包含一个nextNode域(指针域),这样的链表称为单链表
带头节点的单链表
- 在链表的第一个节点之前设一个节点,也叫头节点
- 头节点的引入使得单链表的头指针永远不为空,从而方便了插入、删除等操作
链式存储结构的特点
优点
- 不需要占用连续存储空间,使用链表前不用事先估计存储空间大小
- 插入和删除操作时,不需要移动大量元素
缺点
- 操作逻辑算法繁杂
- 不能随机存取数据
小结
链式存储结构适合线性表的长度不可估计(预计),需要频繁进行插入和删除的操作
代码实现
public class SingleLinkedListDemo {
public static void main(String[] args) {
// 初始化节点
ComputerNode computer1 = new ComputerNode(2, "华为");
ComputerNode computer2 = new ComputerNode(1, "苹果");
ComputerNode computer3 = new ComputerNode(4, "华硕");
ComputerNode computer4 = new ComputerNode(3, "小米");
// 链表
SingleLinkedList singleLinkedList = new SingleLinkedList();
// 直接加入
/*singleLinkedList.add(computer1);
singleLinkedList.add(computer2);
singleLinkedList.add(computer3);
singleLinkedList.add(computer4);*/
// 按照number排序加入
singleLinkedList.addByOrder(computer1);
singleLinkedList.addByOrder(computer2);
singleLinkedList.addByOrder(computer3);
singleLinkedList.addByOrder(computer4);
singleLinkedList.addByOrder(computer4);
// 显示
System.out.println("排序显示,以及更新前");
singleLinkedList.show();
// 更新
singleLinkedList.update(new ComputerNode(2, "华为笔记本电脑"));
// 显示
System.out.println("排序显示,以及更新后,删除前");
singleLinkedList.show();
// 删除
singleLinkedList.delete(