数据结构--链表(概念)

线性表的顺序存储结构的特他点是逻辑关系上相邻的两个元素下物理位置上也相邻。而线性表的链式存储它不需要地址连续的存储空间来实现,因为他不要求逻辑相邻的两个元素物理位置也相邻,他虽然访问比较繁琐,但是插入和删除比较容易。如下是单向链表的结点结构:
在这里插入图片描述
在这里,我们假设L是Linklist类型的变量,那么L就是一个指针,他只想表中的第一个结点。结点类型LNode,LinkList是是指向LNode类型结点的指针类型。

1.链表的分类
头指针头结点
指向第一个结点的指针,若链表有头结点,则是指向头结点的指针放在第一个元素之前,其数据域一般无意义(也可以存放链表的长度)
具有表示作用,常用头指针作为链表的名字有了头结点在第一个元素结点之前插入和删除第一个结点的操作就统一了
-----造成了空间浪费

不带头结点的单链表中每个节点的存储地址是存放在其前驱节点的指针域中的,第一个无前驱,最后一个无后继。
不带头结点
在线性链表的第一个结点之前加上一个成为头结点的结点。头结点的数据域可以不存放任何数据,也可以存放链表的结点个数信息。设置表头结点的目的是简化链表操作的实现。
带头结点的非空单链表:
带头结点非空单链表
带头结点的空单链表:
在这里插入图片描述

不带头结点和带头结点链表的区别

不带头结点带头结点
链表为空:L==NULL为真链表为空:L->next==NULL为真
链表的第一个数据元素由L指向链表的第一个元素由L->next指向
头插和头删时要单独处理,与其他地方的插入和删除操作不同插入和删除操作相同
  • 循环单链表

对于单链表最后一个结点的指针域是空指针,如果将最后一个结点的指针域指向表头结点,则是的链表的头,尾结点相连接,就构成了循环单链表。
非空表:
在这里插入图片描述
空表:在这里插入图片描述

  • 双向链表

双向链表中结点的结构:
在这里插入图片描述
非空双向链表:
在这里插入图片描述

单向链表只有一个方向,节点中只有一个后继指针next指向后面的节点,而双向链表,它支持两个方向,每个节点有一个后继指针,同时还有一个前去指针prev指向前面的结点。

如果了解了循环链表和双向链表,那么双向循环链表就是将他们整合在一起。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值