- 博客(5)
- 资源 (7)
- 收藏
- 关注
翻译 数据结构与算法之美--打怪升级路9
什么是队列?先进者先出,这就是典型的“队列”结构。支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。所以,和栈一样,队列也是一种操作受限的线性表。顺序队列链式队列循环队列确定好队空和队满的判定条件。队空:head == tail队满:(tail+1)%n=head。队列有哪些常见的应用?阻塞队列在队列的基础上增加...
2018-12-09 22:56:14 260
翻译 数据结构与算法之美--打怪升级路7
什么是栈?后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性来看,是一种“操作受限”的线性表,只允许在端插入和删除数据。为什么需要栈?栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。但,任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险。所以,当某个数据集合只涉及在某端插入和删除数据,且满足后...
2018-12-09 22:54:59 155
翻译 数据结构与算法之美--打怪升级路8
什么是递归?递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。基本上,所有的递归问题都可以用递推公式来表示。为什么使用递归?递归的优缺点?优点:代码的表达力很强,写起来简洁。缺点:空间复杂度高、有堆栈溢出风险、存在重复计算、过多的函数调用会耗时较多等问...
2018-12-09 22:53:19 474
翻译 数据结构与算法之美--打怪升级路6
如何轻松写出正确的链表代码?理解指针或引用的含义1.含义:将某个变量(对象)赋值给指针(引用),实际上就是就是将这个变量(对象)的地址赋值给指针(引用)。2.示例:p—>next = q; 表示p节点的后继指针存储了q节点的内存地址。p—>next = p—>next—>next; 表示p节点的后继指针存储了p节点的下下个节点的内存地址。警惕指针丢失和内存泄漏(...
2018-12-02 19:16:46 130
翻译 数据结构与算法之美--打怪升级路5
什么是链表?和数组一样,链表也是一种线性表。2.从内存结构来看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构。3.链表中的每一个内存块被称为节点Node。节点除了存储数据外,还需记录链上下一个节点的地址,即后继指针next。##为什么使用链表?即链表的特点1.插入、删除数据效率高O(1)级别(只需更改指针指向即可),随机访问效率低O(n)级...
2018-12-02 16:23:17 168
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人