当前位置:网站首页>链表的简单描述及代码的简单实现
链表的简单描述及代码的简单实现
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
边栏推荐
猜你喜欢

C语言日记 9 if的3种语句

线上MySQL的自增id用尽怎么办?
![[ROS] (10) ROS Communication - Service Communication](/img/4d/4657f24bd7809abb4bdc4b418076f7.png)
[ROS] (10) ROS Communication - Service Communication

Data storage practice based on left-order traversal

继承关系下构造方法的访问特点

Data to enhance Mixup principle and code reading

剑指offer专项突击版第20天

Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中

蚁剑高级模块开发

Apache DolphinScheduler, a new generation of distributed workflow task scheduling platform in practice - Medium
随机推荐
02 [Development Server Resource Module]
线上MySQL的自增id用尽怎么办?
sql语句多字段多个值如何进行排序
Flink 1.15.1 集群搭建(StandaloneSession)
解决connect: The requested address is not valid in its context
C language implements a simple number guessing game
C学生管理系统 头添加学生节点
特殊矩阵的压缩存储
用@Mapper查询oracle的分区情况报错
C student management system head to add a student node
mysql没法Execute 大拿们求解
J9数字货币论:web3的创作者经济是什么?
RAID disk array
LeetCode uses the minimum cost to climb the stairs----dp problem
Error: Not a signal or slot declaration
数据增强Mixup原理与代码解读
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型
【LeetCode刷题】-数之和专题(待补充更多题目)
Data to enhance Mixup principle and code reading
leetcode-另一棵树的子树