- 博客(6)
- 收藏
- 关注
原创 二叉树的递归&非递归遍历及其他函数功能的实现
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序,中序,后序以及层序四种遍历方法。因为树的定义本身就是递归定义,所以前三种遍历方式采用递归不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。层序的实现则要用到队列里的“先进先出”的原理来实现。先来介绍一下要实现的函数:templateclass Binary
2016-09-27 23:09:46 403
原创 广义表的简单实现
广义表是一种允许表中有表的非线性结构,在实现广义表的基本操作时需注意以下几个问题:1.就如下图来看,Head为表的头结点,它存储着指向广义表或其子表的地址;Value是广义表的一个值节点;那么Sub的作用是什么呢?又为什么不把子表的Head直接放入Sub里呢?原因在于,我们可以把Sub当成一个子表项,它和value是同一层次的(都可看成是第一层的),通过它的next找到下一个值节点或另一个表项
2016-09-24 14:31:14 923
原创 实现一个栈,要求push,pop,Min的操作时间复杂度为O(1)
问题:实现一个栈,要求实现Push(入栈),Pop(出栈),Min(返回最小值)的操作时间复杂度为O(1).分析:刚看到这个题的时候,用栈来实现Min(返回最小值)的操作,我的第一反应就是必须把栈中的最小值放在top()位 置,然后根据栈的“后进先出”的道理来实现,但是问题接着就来了。首先,根据元素的不断push,最小值很有可能在
2016-09-11 22:33:10 4208
原创 用栈实现简单的迷宫游戏
迷宫游戏的实现是运用了栈的“后进先出”的原理,究竟如何实现的呢?下来简单的分析一下。比如:下图是一个小迷宫1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 10 0 0 1 1 1 1 1 1 11 1 0 1 1 1 1 1 1 1 //0---表示通路1 1 0 1 1 1 1 0 0 0 //1----表示墙1 1 0 1 1
2016-09-10 16:07:38 3030
原创 数据结构之时间.空间复杂度分析
在很多数据结构的面试题中看似简单,但是对题目的要求却挺高,主要就体现在复杂度分析方面。复杂度又分为时间复杂度和空间复杂度。1.时间复杂度时间复杂度实际就是函数,函数计算执行的基本操作次数 .在进行时间复杂度分析时需注意: 1)时间复杂度强调的是函数执行的操作次数,这里的函数是指数学里面的函数,而不是C语法里的函数;2)在实际中我们通常情况考量的是算法的最坏情况;3)
2016-09-07 22:55:09 10676 2
原创 c++之浅析智能指针
在c++中,当一个函数发现自己无法处理的错误时就抛出异常,然后对其进行捕捉,此时我们设计的执行流就会发生改变,这样会很容易引发内存泄漏的问题。下面就举一个小例子:#includeusing namespace std;void fun(){ int* ptr=new int(1); if(1) { throw 1; } delete ptr;}int main()
2016-09-05 08:39:49 501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人