数据结构
文章平均质量分 58
信创DevOps先锋
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表复习题
C或者C++实现下面的题目并测试: 1. 比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? 2. 从尾到头打印单链表 3. 删除一个无头单链表的非尾节点 4. 在无头单链表的一个节点前插入一个节点 5. 单链表实现约瑟夫环 6. 逆置/反转单链表 7. 单链表排序(冒泡排序&快速排序) 8. 合并两个有序链表,合并后依然有序 9. 查找单原创 2017-07-31 13:44:52 · 377 阅读 · 0 评论 -
快速排序实现之递归与非递归
一、算法思想: 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为:在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..piv转载 2017-08-01 13:38:12 · 407 阅读 · 0 评论 -
四大排序分析与总结
为了便于描述,在这篇博客里且将内部排序分为: 1.插入排序(直接插入和希尔) 2.交换排序(冒泡和快排) 3.选择排序(直接选择和堆排序) 4.归并排序 1.插入排序直接插入排序(Straight Insertion Sort)基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进原创 2017-07-26 21:26:59 · 3372 阅读 · 0 评论 -
判断一个树是否为完全二叉树
完全二叉树的定义是,前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。 采用广度优先遍历,从根节点开始,入队列,如果队列不为空,循环。遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树。这个方法需要遍历整棵树,复杂度为O(N),N为节点的总数。//二叉树结点定义typedef struc原创 2017-07-27 23:20:54 · 450 阅读 · 0 评论 -
如何根据前序遍历和中序遍历重建二叉树
题目:由前序遍历和中序遍历重建二叉树 (前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5) 1.解题思路: 由前序遍历序列可知,第一个节点是根节点, 由中序遍历序列可知,第一个节点是根节点的左子树节点, 而且前序遍历中,根节点左边是左子树,右边是右子树 由上述分析结果,可以递归调用构建函数,根据左子树、右子树的先序、中序遍历重建左、右子树。代码及注释如下#i原创 2017-07-28 11:35:02 · 314 阅读 · 0 评论
分享