问题描述中序遍历二叉树时,很简单,需要加上递归就可以优雅地实现了。当然,使用递归的话,函数调用栈的空间就会达到O(log n)。那么有什么方式,可以使得中序遍历二叉树的复杂度为O(1)呢?问题分析既然要保证O(1)复杂度,那么就不能使用递归调用了。目标方案应该是使用while或for循环的方式。下面借用一张图来解释(来源:http://www.2cto.com/kf/201402/277873.ht...
分类:
其他好文 时间:
2015-06-22 11:05:39
阅读次数:
205
第五章是到目前位置最让我头疼的一章,不是因为难,是因为对最终的目的不太明确。整章前半部分用十分精简的语言介绍了一个新的概念,活动记录,也就是在函数调用时,一个调用栈究竟发生了什么事。但是,在最终编码实现过程中,总不能理解作者为什么给了这些变量?或者说,完全不知道作者究竟想让我完成一个怎样的功能...
分类:
其他好文 时间:
2015-06-07 23:32:48
阅读次数:
446
实现自己的方法时,如果方法无法完成方法名指定的任务,就应抛出一个异常,抛出异常时要考虑两个问题。第一个问题是抛出什么Exception派生类型。应选择一个有意义的类型。要考虑调用栈中位于高出的代码,要知道那些代码如何判断一个方法失败,以便执行一些得体的恢复代码。可直接利用FCL中定义好的一个类型,....
分类:
其他好文 时间:
2015-06-01 22:07:16
阅读次数:
122
今天简单的实现了一下顺序栈,栈的核心函数是push(),top(),pop()。首先是我自己编写的栈,后面是STL标准库调用栈函数。
sqstack.h
//栈的简单实现lifo
#ifndef SQSTACK_H_
#define SQSTACK_H_
const int DEFAULT_SIZE=10;
#include
using std::cout;
using std::endl;...
分类:
其他好文 时间:
2015-05-25 18:49:44
阅读次数:
184
介绍 我之前在任何场合都没有使用过thread local,因此没有注意到它,直到最近用到它的时候。前提信息 线程可以理解为一个单独的进程,它有自己的调用栈。在java中每一个线程都有一个调用栈或者说每一个调用栈都有一个线程,即使你不在你的程序中创建线程,线程仍然会在你不知道的情况下运行。最简单.....
分类:
其他好文 时间:
2015-05-24 00:06:41
阅读次数:
98
[注]此文是《程序员的自我修养》的读书总结,其中掺杂着一些个人的理解,若有不对,欢迎拍砖。
程序的内存布局
现代的应用程序都运行在一个虚拟内存空间里,在32位的系统里,这个内存空间拥有4GB的寻址能力。现代的应用程序可以直接使用32位的地址进行寻址,整个内存是一个统一的地址空间,用户可以使用一个32位的指针访问任意内存位置。
在进程的不同地址区间上有着不同的地位,...
分类:
其他好文 时间:
2015-05-22 00:34:56
阅读次数:
112
递归就是函数间接的调用自己, 它的实现基于函数参数传递的栈机制, 每次递归递归调用都会多一个栈帧——和简单的函数调用并没有什么不同 (都是使用了调用栈)。调用自己和调用其它函数并没有本质的区别, 都是建立新栈帧, 传递参数并修改当前代码行。在函数体执行完毕后删除栈帧, 处理返回值并修改当前代码行。....
分类:
其他好文 时间:
2015-05-17 21:39:51
阅读次数:
132
Java的函数调用栈就是Java虚拟机栈,它是线程私有的,与线程一同被创建,用于存储栈帧。
栈帧随着方法的调用而创建,随着方法的结束而销毁。可以说栈帧是方法的抽象。
于是,可以通过打印出Java虚拟机栈中的栈帧信息来了解函数调用过程。用于实现这个过程的Java代码如下:
package methodcall;
public class Methods {
public void meth...
分类:
编程语言 时间:
2015-05-17 12:22:19
阅读次数:
488
你注意到了吗?在Xcode中,当你点击查看调用栈的时候,调用栈的每个方法前面都有一个Icon,而且还有好几种不同的样子,如下图所示,你知道它们代表什么意思吗?其实它们代表的意义如下:Person icon is UserMug icon is AppKit (or UIKit)Briefcase i...
分类:
其他好文 时间:
2015-05-13 16:12:52
阅读次数:
130
我的意见是,忘记java或者c#的对立,如果要做一个开心、有自我追求、同时满足就业的程序员,你需要重视以下方面:函数调用栈,这个很多高级程序员只知其然不知其所以然。你可以不懂的汇编、函数入口、返回地址、寄存器,但你需要调试,你得深刻理解函数调用栈,无论是在dev模式调试struts开发的jsp页面,...
分类:
其他好文 时间:
2015-05-12 10:54:21
阅读次数:
96