当前位置:网站首页>链表的简单描述及代码的简单实现
链表的简单描述及代码的简单实现
2022-08-05 02:33:00 【小奔同学】
3.链表
3.1 链表的概念及结构
概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 ,就像下面的火车一样。
现实的数据结构中
注意:
- 链表中结点逻辑上是连续的,在物理上是不一定连续的
- 现实中的结点一般都是由堆申请过来的
- 从堆申请来的空间是按一定的策略来分配的,物理上可能连续,也可能不连续
3.2 链表的分类
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
单向或者双向

带头或者不带头

循环或者非循环

虽然有这么多的链表的结构,但是我们实际中最常用还是两种结构:
无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。

带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,下一篇代码实现了就知道了。

3.3 链表的实现
typedef int SLTDateType;
typedef struct SLT
{
SLTDateType data;
struct SLT* next;
}SListNode;
// 动态申请一个节点
SListNode* BuySListNode(SLTDateType x);
// 单链表打印
void SListPrint(SListNode* plist);
// 单链表尾插
void SListPushBack(SListNode** pplist, SLTDateType x);
// 单链表的头插
void SListPushFront(SListNode** pplist, SLTDateType x);
// 单链表的尾删
void SListPopBack(SListNode** pplist);
// 单链表头删
void SListPopFront(SListNode** pplist);
// 单链表查找
SListNode* SListFind(SListNode* plist, SLTDateType x);
// 单链表在pos位置之后插入x
// 分析思考为什么不在pos位置之前插入?
void SListInsertAfter(SListNode* pos, SLTDateType x);
// 单链表删除pos位置之后的值
// 分析思考为什么不删除pos位置?
void SListEraseAfter(SListNode* pos);
// 单链表的销毁
void SListDestroy(SListNode* plist);
// 单链表删除pos位置的值
void SListErase(SListNode** plist, SListNode* pos);
函数具体内容上传到了gitee
边栏推荐
- [Decryption] Can the NFTs created by OpenSea for free appear in my wallet without being chained?
- Solve connect: The requested address is not valid in its context
- 【存储】曙光存储DS800-G35 ISCSI各映射LUN给服务器
- SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型
- OpenGL 工作原理
- 【C语言】详解栈和队列(定义、销毁、数据的操作)
- QT MV\MVC结构
- Pisanix v0.2.0 发布|新增动态读写分离支持
- Data storage practice based on left-order traversal
- Images using redis cache Linux master-slave synchronization server hard drive full of moved to the new directory which points to be modified
猜你喜欢

select 标签自定义样式

The design idea of DMicro, the Go microservice development framework

leetcode 15

Ant Sword Advanced Module Development

SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型

Quickly learn chess from zero to one

剑指offer专项突击版第20天

2022-08-04: Input: deduplicated array arr, the numbers in it only contain 0~9.limit, a number.Return: The maximum number that can be spelled out with arr if the requirement is smaller than limit.from
![[LeetCode Brush Questions] - Sum of Numbers topic (more topics to be added)](/img/ee/6b52072c841af99488dc0c1141c74c.png)
[LeetCode Brush Questions] - Sum of Numbers topic (more topics to be added)

VSCode Change Default Terminal how to modify the Default Terminal VSCode
随机推荐
重新审视分布式系统:永远不会有完美的一致性方案……
01 [Foreword Basic Use Core Concepts]
注意潍坊开具发票一般需要注意
程序员的七夕浪漫时刻
使用SuperMap iDesktopX数据迁移工具迁移ArcGIS数据
协作D2D局部模型聚合的半分散联合学习
mysql tree structure query problem
【日常训练】1403. 非递增顺序的最小子序列
mysql没法Execute 大拿们求解
SDC简介
数据增强Mixup原理与代码解读
浅谈数据安全治理与隐私计算
采用redis缓存的linux主从同步服务器图片硬盘满了移到新目录要修改哪些指向
Ant Sword Advanced Module Development
How to simply implement the quantization and compression of the model based on the OpenVINO POT tool
C学生管理系统 指定位置插入学生节点
lua学习
C student management system head to add a student node
OpenGL 工作原理
shell语句修改txt文件或者sh文件