C++数据结构第21课、线性表的链式存储结构

1、存在的问题

顺序存储结构线性表的最大问题是:插入和删除需要移动大量的元素,如何解决这个问题?

2、线性表的链式存储结构

链式存储的定义:数据元素除了存储本身的信息外,还要存储其直接后继的信息
在这里插入图片描述
在这里插入图片描述
在物理内存中无相邻关系

  • 链式存储逻辑结构
    — 基于链式存储结构的线性表中,每个结点都包含数据域指针域
    数据域:存储数据元素本身
    指针域:存储相邻结点的地址
    在这里插入图片描述

3、专业术语的统一

— 顺序表
  基于顺序存储结构的线性表
— 链表
  基于链式存储结构的线性表
在这里插入图片描述

4、链表中的基本概念

头结点
  链表中的辅助结点,包含指向第一个数据元素的指针

数据结点
  链表中代表数据元素的结点,表现形式为:(数据元素,地址)

尾结点
  链表中的最后一个数据结点,包含的地址信息尾空

  • 单链表的结点定义
    在这里插入图片描述
template <typename T>
struct Node : public Object
{
	T value;
	Node* next;
}
  • 单链表的内部结构
    在这里插入图片描述
    头结点在单链表中的意义:辅助数据元素的定位,方便插入和删除,因此,头结点不存储实际的数据元素(我们可以自己定义一个头结点,用 current 这个结点指针指向头结点,current -> next 指向第一个 Node 结点)

5、在目标位置处插入数据元素
在这里插入图片描述

for(int i = 0; i < size; i++)
{
	current = current->next;
}
Node* node = new Node();
node->next = current ->next;
current ->next = node; 

6、在目标位置处删除数据元素
在这里插入图片描述

for(int i = 0; i < size; i++)
{
	current = current->next;
}
toDel = current ->next;
current ->next = toDel ->next; 
delete toDel;

小结:

  • 链表中的数据元素在物理内存中无相邻关系
  • 链表中的节点都包含数据域和指针域
  • 头结点用于辅助数据元素的定位,方便插入和删除操作
  • 插入和删除操作需要保证链表的完整性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值