9.线性表的链式存储

1. 链式存储的定义

为了表示每个数据元素与其直接后继元素之间的逻辑关系,数据元素除了存储本身的信息外,还需要存储其直接后继的信息。
在这里插入图片描述
ai 和 ai+1 是线性表中的两个相邻数据元素,在物理内存中无相邻关系

2. 链式存储逻辑结构

基于链式存储结构的线性表中,每个结点都包含数据域和指针域

  1. 数据域:存储数据元素本身
  2. 指针域:存储相邻结点的地址
    在这里插入图片描述

3. 专业术语的统一

  1. 顺序表

基于顺序存储结构的线性表

  1. 链表

基于链式存储机构的线性表 :
单链表:每个结点只包含直接后继的地址信息
循环链表:单链表中的最后一个结点的直接后继为第一个结点
双向链表:单链表中的结点包含直接前驱和后继的地址信息

4. 链表中的基本概念

头结点:链表中的辅助结点,包含指向第一个数据元素的指针
数据结点:链表中代表数据元素的结点,表现形式为:(数据元素,地址)
尾结点:链表中的最后一个数据结点,包含的地址信息为空

4.1 单链表中的结点定义

struct Node : public Object
{
	T value;
	Node* next;//指向后继结点的指针
};

4.2 单链表中的内部结构在这里插入图片描述

头结点在单链表中的意义是:辅助数据元素的定位,方便插入和删除操作;因此,头结点不存储诗集的数据元素

4.3 在目标位置插入数据元素

  1. 从头结点开始,通过current指针定位到目标位置
  2. 从堆空间申请新的Node结点
  3. 执行操作:

node->value = e;
node->next = current->next;
current->next = node;

4.4 在目标位置删除数据元素

  1. 从头结点开始,通过current指针定位到目标位置
  2. 使用toDel指针指向需要删除的结点
  3. 执行操作:

toDel = current->next;
current->next = toDel->next;
delete toDel;

5. 小结

链表中的数据元素在物理内存中无相邻关系
链表中的结点都包含数据域和指针域
头结点用于辅助数据元素的定位,方便插入和删除操作
插入和删除操作需要保证链表的完整性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值