| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 算法提升 (三)基础数据结构 -> 正文阅读 |
|
[数据结构与算法]算法提升 (三)基础数据结构 |
链表阅读这篇文章之前需要有初阶数据结构的基础 关于链表的结构如果还有不了解的同学可以参考下我的这篇文章 1. 反转单链表
这个题目在算法方面其实没有太多的技巧 主要是锻炼下我们的coding能力 我们来看图 单次的操作大概是这样子的 我们将当前的指针指向前面一个指针 这样子操作就完成啦 后面其实就是迭代操作 prev到pos位置 pos到next位置 next到最后的位置 代码表示如下
没有什么难度 2. 反转双链表
这个的思路和前面反转单链表完全一致 按照上面的思路搞就可以 这里不再赘述 3. 删除链表中的重复项
我们先考虑一种特殊情况 当我们的头就是我们要删除的节点的时候是不是要用头删啊 并且这个时候还需要移动头的位置 直到我们当前的数据不是我们要删除的数据了 是不是头才能确定下来 大家想想看是不是 之后就很简单了 cur找重复项 prev记录前面的值 如果cur是重复项的话 prev就指向cur的next 之后prev走到cur的位置 cur往前跑 不断循环 之后返回head就可以了 代码表示如下
队列和栈还是跟前面一样 在看后面的内容之前需要有队列相关知识 具体大家可以看看我写的这两篇文章啊 1. 循环队列这道题前面的博客已经写过了 这里简单介绍下思路 首先我们可以设置两个指针 分别指向头尾 但是我们这里发现 不太好判断队列的空 满是吧 那么这里我们可以增加一个参数 size 如果size= 0 是不是就代表队列为空 如果size = 最大值 是不是就代表队列为满 对这道题有兴趣的同学可以看看我的这篇博客 试着用我这里提供的方法将这个循环队列写出来 2. 特殊栈要求我们实现一个特殊的栈 它有两个功能 一个功能和基础的栈一样 还有一个功能是能够返回这个栈里面的最小值 这个思路也很简单 我们用两个栈来实现就好了 一个栈实现全部的普通功能 一个栈压栈的时候 1 如果为空 就压栈第一个元素 2 如果不为空 压栈当前元素和栈内最小元素两者的较小值 这样子就可以啦 3. 队列与栈用两个队列实现栈 用两个栈实现队列 这两个题目前面的博客中均有涉及 大家可以移步观看 总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 19:46:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |