摘要: 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。根据提供的思路,我自己写了一个读入任意序列的整数,建立二叉查找树再改成链表的C++代码:#include <iostream>#include <fstream>#include <string>using namespace std;// binary search tree nodestruct BSTreeNode{ int value; struct BSTreeNode *leftChild; struct BSTreeNode *righ 阅读全文
posted @ 2012-04-09 16:00 waytofall 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 结构之法 算法之道http://blog.csdn.net/v_JULY_v微软、Google等面试题 - 剑指Offer:名企面试官精讲典型编程题http://zhedahht.blog.163.com/陈硕的Blog 介绍一些计算机深入的基础问题http://blog.csdn.net/SolsticeAuckland U. Data Structures and Algorithmshttp://www.cs.auckland.ac.nz/~jmor159/PLDS210/ds_ToC.html一个介绍正则表达式的不错的教程http://deerchao.net/tutorials/re 阅读全文
posted @ 2012-04-09 13:48 waytofall 阅读(445) 评论(0) 推荐(1) 编辑
摘要: 很早之前写的一篇嘈文。。。。随便看看哈。。。莫拍砖。。“学Windows编程的同学伤不起尼玛微软人喜欢用‘_’啊一个‘_’不行两个啊尼玛‘__’神马啊眼晕啊,有木有 学Windows编程的同学伤不起尼玛微软不按套路出牌啊C语言标准不ANSI啊尼玛大学清高啊学语言都是《C语言程序设计》啊不是《Windows环境C语言编程》啊但尼玛微软霸主啊Windows垄断啊大学教材尼玛受影响啊学了C现在分不清哪个是ANSI标准哪个是Windows特有啊大学教材敢不敢采用K&R的《The C Programming Language》啊尼玛全乱用啊,有木有 学Windows编程的同学伤不起尼玛VS坑爹啊 阅读全文
posted @ 2012-03-29 10:53 waytofall 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 多线程是编程中比较容易出问题的一块儿,究其原因,是因为多线程程序往往违背了高级语言屏蔽系统底层细节的设想,而需要程序员对于操作系统的调用机制有深入了解。会用高级语言写算法程序->编写多线程程序可能是一个比较困难的跨越。当然,对于多线程程序来说,即使不掌握操作系统的细节,如果学过一些操作系统的通用原理,可能也是可以勉强写出程序来的,但是对程序的控制的和理解可能就不那么过硬。假如多线程程序又包含了多模块(DLL动态加载),则如果不能理解内部的机制,写出的程序可能就是一场灾难。在应对多模块对DLL的调用时,Windows提供了TLS(Thread Local Storage,线程局部存储机制) 阅读全文
posted @ 2012-01-10 20:19 waytofall 阅读(4958) 评论(0) 推荐(0) 编辑
摘要: 我在做一个mfc dll的过程中遇到了一个棘手的模块状态设置错误的问题,跟踪了很久,看了很多帖子和书籍最终解决了这个问题。由于第一个帖子是在codeguru上发的,所以就索性一直用英文记录整个过程了,我的问题记录如下:===================================== seperate line =========================================I'm working on a project that's using a mfc regular dll from a Qt gui project(yes, you don 阅读全文
posted @ 2012-01-09 14:56 waytofall 阅读(5541) 评论(0) 推荐(1) 编辑
摘要: 学习MFC到底有多难,这个应该因人而异。 如果你是一个从系统底层做起的经验丰富的优秀程序员,踏实,知识渊博,编程素养高超,那么,你很有可能就是开发MFC类库的一分子。 如果你没学过几年编程,以前的写的程序都只是对数据库增删查改的基于JSP、ASP的信息管理系统云云,你根本不懂系统底层的一丁点儿知识,C语言写起来你都嫌烦,C++更别提,宏是神马玩意儿?你编程从来不参考官方文档,从来不阅读超过一本的经典书籍,到了交编程作业时你就只会去图书馆抓一本《XXX技术内幕》、《XXX技术快速入门》、《XXX技术从入门到精通》然后废了九牛二虎之力甚至连IDE的环境都搭不好,遇了问题只好... 阅读全文
posted @ 2012-01-04 21:31 waytofall 阅读(1338) 评论(4) 推荐(2) 编辑
摘要: 文章只是简要的介绍了Qt的内存管理机制,对理解内存管理比较有帮助强类型语言在创建对象时总会显式或隐式地包含对象的类型信息。也就是说,强类型语言在分配对象内存空间时,总会关联上对象的类型。相比之下,弱类型语言则不会这样做。在分配了内存空间之后,有两种方法释放空间:手工释放,或者是使用垃圾收集器。C++ 要求开发者手工释放内存空间。这样做的好处是,开发者对内存有完全的控制能力,知道什么时候释放比较合适。Java 则使用垃圾收集器。它在后台会有一个线程根据一定的算法不停地查看哪些对象已经不被使用,可以被回收。这样做则可以将开发者从底层实现中解放出来,只需关注于业务逻辑。本文关注于 Qt 的内存管理, 阅读全文
posted @ 2012-01-02 09:59 waytofall 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 此文一定程度上说明了VC IDE的构造机理。很有趣的实验。首先简单介绍一下程序是如何编译链接的。程序写好之后,我们进行编译和链接来产生可执行程序。这时候,编译器为了完成编译和链接,需要知道很多信 息。比如要编译的文件是哪一个,使用哪些编译选项进行编译,编译好之后输出到哪里,输出文件叫什么名字等等。makefile 就是被vc使用保存这些信息的方法之一,编译时程序nmake根据makefile中的信息,在用相应选项执行编译,用相应执行链接,最后生成可执行文件。vc的编译程序是CL.EXE,链接程序是LINK.EXE。关于本文所提到的vc编译链接用的程序都在目录 "$VCInstDir/ 阅读全文
posted @ 2011-12-30 16:56 waytofall 阅读(2767) 评论(0) 推荐(0) 编辑
摘要: 最近在做MFC向Qt的移植,在内存管理方面遇到了很头疼的问题,虽然不知道问题到底出在哪,先了解下这两个库的内存管理方式。于是转载两篇关于内存管理的文章。一. Qt内存管理:在Qt的程序中经常会看到只有new而不delete的情况,其实是因为Qt有一套回收内存的机制,主要的规则如下:1.所有继承自QObject类的类,如果在new的时候指定了父亲,那么它的清理时在父亲被delete的时候delete的,所以如果一个程序中,所有的QObject类都指定了父亲,那么他们是会一级级的在最上面的父亲清理时被清理,而不用自己清理;2. 程序通常最上层会有一个根的QObject,就是放在setCentral 阅读全文
posted @ 2011-12-30 11:56 waytofall 阅读(2694) 评论(0) 推荐(0) 编辑
摘要: 最近在做一个把MFC下的项目移植到Qt上的工作,想知道Qt源文件的编译过程,但网上类似帖子比较少,这篇帖子讲解的比较深入,故转载:这篇短文假定读者熟悉C\C++项目的基本编译过程。moc.exe和cl.exe由于是针对2个cpp进行编译,即2个编译单元的2次调用,因此为了更清除的表达在上图中各出现了2次。这里用一个例子演示了QT中2个重要的工具程序uic和moc的作用:假设用QDesigner设计了一个X.UI窗口,之后就需要使用uic来进行编译,生成对应的.h文件.另外一个自定义的类型ClsA使用了Q_Object宏,进而可以使用QT的信号、槽机制,或者不使用QTDesigner派生出新的Q 阅读全文
posted @ 2011-12-29 16:40 waytofall 阅读(3918) 评论(0) 推荐(1) 编辑