![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
小漆同学
一只有梦想的咸鱼!
展开
-
链表(下)
如何轻松写出正确的链表代码? 技巧一:理解指针或引用的含义 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就可以找到这个变量。 栗子1: p->next=q p结点中next的指针存储了q的内存地址。 栗子2: p->next=p->next->next p的next指针存储了p的下下一个结...原创 2019-11-14 16:40:01 · 224 阅读 · 0 评论 -
链表(上)
什么是链表 链表是指将一组零散的内存块串联在一起,我们把内存块称之为结点,每个链表的结点除了存储数据外还要记录链上的上一个或下一个结点的地址。我们把记录下个结点地址的叫做后继指针next,把上个结点称为前驱指针prev。 相比数组,链表是一种稍微复杂一点儿的数据结构。 链表的分类 链表的种类非常多,最常见的有三种链表结构,分表为:单向链表、双向链表和循环链表 单链表 顾名思义就是指链表上只有一个...原创 2019-11-13 18:29:12 · 201 阅读 · 0 评论 -
数组
什么是数组(Array)? 是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 数组是如何实现随机访问的? 线性表 数据像排成一条线一样的数据结构,每个线性表上的数据最多只有前和后两个方向。 数组、链表、队列、栈都是线性表结构。 与线性表相对立,即数据不在一条线上的数据结构, 每个非线性表上的数据之间并不是简单的前后关系。 二叉树、堆、图等都是非线性表结构。 连续的...原创 2019-11-13 13:19:15 · 212 阅读 · 0 评论 -
数据结构与算法书单
趣味入门书籍 《大话数据结构》 《算法图解》 面试必刷的宝典 《剑指 offer》 《编程珠玑》 《编程之美》 针对特定编程语言的书籍 《数据结构与算法分析 :C 语言描述》 《数据结构与算法分析:C++ 描述》 《数据结构与算法分析:Java 语言描述》 《数据结构与算法 JavaScript 描述》 《数据结构与算法:Python 语言描述》 经典大部头 《算法导论》 《算法》 殿堂级经典 ...原创 2019-11-13 11:18:05 · 207 阅读 · 0 评论 -
时间复杂度分析(下)
最好、最坏情况时间复杂度 // n表示数组array的长度 int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos; } 时间复杂度为:O(n) 优化代码: // n...原创 2019-11-13 11:01:04 · 171 阅读 · 0 评论 -
时间复杂度分析(上)
为什么会有时间复杂度分析? 数据结构和算法解决的就是‘快’和‘省’的问题,即如何让代码跑的更快,更省存储空间。 大 O 复杂度表示法 算法的执行效率,粗略地讲,就是算法代码执行的时间 只关注循环执行次数最多的一段代码 大 O 这种复杂度表示方法只是表示一种变化趋势,我们通常会忽略掉公式中的常量、低阶、系数,只需要记录一个最大阶的量级就可以了。所以在分析一个算法、一段代码的时间复杂度的时候,也只关...原创 2019-11-12 20:19:32 · 3664 阅读 · 0 评论 -
基本概念与知识点
什么是数据结构? 什么是算法? 广义:数据结构指一组数据的存储结构;算法指操作数据的一组方法 狭义:著名的数据结构和算法,例如队列、栈、堆、二分查找、动态规划 数据结构和算法是相辅相成的,数据结构是为算法服务的,算法要作用在特定的数据结构之上 复杂度分析 数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法 数据结构与算...原创 2019-11-12 15:49:59 · 273 阅读 · 0 评论