| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构】纯c语言双向链表 -> 正文阅读 |
|
[数据结构与算法]【数据结构】纯c语言双向链表 |
目录
序章、链表的分类链表可分为一下几种
1.
单向或者双向
2.
带头或者不带头
3. 循环或者非循环
一、节点的定义我们这里学习的是最复杂最实用的链表,带头双向循环链表
双向链表顾名思义,每个节点都有两个指针,分别指向前面和后面。 二、初始化一个链表当我们差滚见一个链表的时候,会需要这个函数帮我们创建一个头结点,我们在函数外面接受这个头结点的地址就可以直接使用了,这里用到了一个很巧妙的结构,在后面会有妙用。
?这个结构可以帮助我们在很多时候不用单独写出一段代码应对某个情况。 三、对链表进行头插对链表都差我们需要先创建一个节点 创建一个新结点
?我们要在这两个结点间插入新结点,用如下的方式:定义一个first再分别改动指针。
考虑一个问题,当链表为空指针的时候,也就是如下的结构,需不需要单独列出来一种情况。 就会变成一下的样子: 并没有不满足我们链表的情况,所以我们不需要单独列出情况,尾插也是同理。 ?四、对链表进行尾插多亏了双向的这个结构,尾插和头插一样的简洁了。相比于单向链表,简单太多了。
五、对链表头删判断链表是否为空当链表为空的时候,我们是不可以删除的。? 所以我们需要一个函数判断链表是否为空
?头删函数也不复杂,用两个指针理清楚关系就行。
六、对链表进行尾删与上面的思路一致
七、对链表进行查找思路也不复杂。
当链表为空的时候,cur是无法进入循环的,直接返回NULL。 八、链表某个位置前插入
九、删除某个链表
十、销毁链表
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:52:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |