单链表,三部分详解(第一部分)单链表的解析

编程入门 行业动态 更新时间:2024-10-27 08:40:27

单<a href=https://www.elefans.com/category/jswz/34/1769662.html style=链表,三部分详解(第一部分)单链表的解析"/>

单链表,三部分详解(第一部分)单链表的解析

1. 链表的概念及结构

链表就是一个在物理储存上非连续,但在逻辑顺序上是连续的指针链接实现。

 

链表就像一大节火车,你在淡季的时候可以把车厢减少一点,旺季的 时候可以多加一点,不会影响其他车厢的使用。每节车厢都独立存在。

那我们怎么让这些火车完成所谓的逻辑顺序的呢?假设每节车厢放着下一个车厢的钥匙,你在走到这一节车厢的时候,就能拿到下一节车厢的钥匙,进入下一节车厢,

这样就相当于往一个结构体里放进一个同类型的结构体指针,就可以同个这个指针指向下一个结构体。

 

与顺序表不同的是这样的每节车厢的独立空间,我们叫做“节点或结点”。

这个节点要保存的是一个数据,和下一个节点的指针。 

为什么要一个指针指向下一个空间呢?因为节点的空间和顺序表不同是用数组存储的。而是随机的内存空间。所以要拿一个指针来寻找。下面的代码表示单链表的节点。

struct SListNode
{int data; //节点数据struct SListNode* next; //指针变量⽤保存下⼀个节点的地址
};

2. 单链表的实现

typedef int SLTDataType;
typedef struct SListNode
{SLTDataType data; //节点数据struct SListNode* next; //指针保存下⼀个节点的地址
}SLTNode;
void SLTPrint(SLTNode* phead);
//头部插⼊删除/尾部插⼊删除
void SLTPushBack(SLTNode** pphead, SLTDataType x);
void SLTPushFront(SLTNode** pphead, SLTDataType x);
void SLTPopBack(SLTNode** pphead);
void SLTPopFront(SLTNode** pphead);
//查找
SLTNode* SLTFind(SLTNode* phead, SLTDataType x);
//在指定位置之前插⼊数据
void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x);
//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);
//在指定位置之后插⼊数据
void SLTInsertAfter(SLTNode* pos, SLTDataType x);
//删除pos之后的节点
void SLTEraseAfter(SLTNode* pos);
//销毁链表
void SListDesTroy(SLTNode** pphead);

这是单链表实现用到的接口,在下一部分会详细进行讲解。 

3. 链表的分类

链表肯定不止一种单链表,他总共用八种,但最重要的就是单链表和双链表 

 

更多推荐

单链表,三部分详解(第一部分)单链表的解析

本文发布于:2023-12-04 18:18:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1661808.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链表   第一部分   详解

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!