大厂面试题:如何实现一个高效的单向链表逆序输出?
如何实现一个高效的单向链表逆序输出? 参考答案:下面是两种方式,第一种是使用while迭代循环,第二种是使用栈辅助,也可以使用递归。 第一种方式:while迭代循环,将指针的指向进行方向指向,C++代码如下: 第二种方式:使用栈辅助,栈的特...
如何实现一个高效的单向链表逆序输出? 参考答案:下面是两种方式,第一种是使用while迭代循环,第二种是使用栈辅助,也可以使用递归。 第一种方式:while迭代循环,将指针的指向进行方向指向,C++代码如下: 第二种方式:使用栈辅助,栈的特...
第一章 类型推导 条款1:理解模板类型推导 条款2:理解auto类型推导 条款3:理解decltype 条款4:知道如何查看类型推导 第二章 auto关键字 条款5:优先使用auto而非显式类型声明 条款6:当auto推导出非预期类型时应当...
上一节讨论了不相交集的实现原理,该数据结构会在本节使用到。图论(graph theory)算法是相当核心的算法,而且图论算法是相当实用的,之前讨论的数据结构,如链表、栈、队列、哈希表都是比较简单的,稍微复杂的是树和堆,本节讨论的图论算法原理...
不相交集(disjoint set)是一种数据结构,又称为并查集(union-find set),或称为联合-查找数据结构或合并查找数据结构,该数据结构主要是使用联合-查找算法(union-find algorithm)。不相交集是一种很有...
上一节我们讨论了优先队列和堆的原理和实现,其中堆可用于排序,称为堆排序(heap sort)。本节详细讨论9大经典排序算法,排序算法可以说是我们开发中的一种基本算法,而用到最多的则是快速排序(quick sort),它适用于一般情形,但并不...
优先队列(priority queue)类似于一般队列(queue),一般队列是一种简单的数据结构,特点是先进先出,详情可查看队列数据结构和实例详解。数据结构从最简单的线性结构,到树结构(二叉树、AVL平衡二叉树、伸展树、B-树和B+树原理...
在上一节我们谈到二叉树、AVL平衡二叉树、伸展树、B-树和B+树原理,相对于树,散列表(Hash Table)或哈希表无疑是一种相当适合使用在快速内存访问上的一种数据结构。树的理想时间复杂度可达到O(logn),而散列表理想情况下可达到常数...
选择排序算法简单的实现为:通过重复从待排序数组中找出最小元素(升序),将该最小元素放在首位置。给定一个待排序的数组,该排序算法需要操作两个子数组:已排序数组和未排序数组,实际操作中这两个数组可以在同一个数组上实现。 选择排序的每次遍历都从一...
在上一节中,我们详细讨论了二叉树、AVL平衡二叉树、伸展树、B树和B+树,对树这种重要的数据结构进行了详细的讨论,如果你对数据结构和算法的基本概念还未了解,可以参考:数据结构、算法分析和算法设计。本节主要是对上一节内容的补充,因为上一节中对...
树(Tree)是一种相当灵活的数据结构(上一节已经详细讲解了基本的数据结构:线性表、栈和队列),你可能接触过二叉树,但是树的使用并不限于此,从简单的使用二叉树进行数据排序,到使用B-树或B+树设计数据库引擎,以及目前热门的人工智能机器学习都...