2011年5月20日

链表反转

摘要: http://www.douban.com/note/81699216/单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka { int data; linka* next;};void reverse(linka*& head){ if(he 阅读全文

posted @ 2011-05-20 09:24 伪君 阅读(236) 评论(0) 推荐(0) 编辑

2011年5月19日

Linux Shell 常用命令与目录分区的学习总结 (开始学习linux)

摘要: 原文:http://blog.csdn.net/Sunboy_2050/archive/2010/07/10/5726262.aspx很早就想根据自己的学习规律和遗忘规律,自己总结一下Linux/Unix系统的Shell命令,一来便于自己时常查询之用,二来也分享于各位博友Linux shell是系统的用户界面,即命令行。它提供了用户与内核进行交互式操作与控制的接口,接受用户输入的命令并把它送入内核中去执行。实际上Shell是Linux/Unix系统的命令解释器,它解释了由用户输入的命令,类似于Windows系统平台下的DOS界面和命令。============================= 阅读全文

posted @ 2011-05-19 16:08 伪君 阅读(244) 评论(0) 推荐(0) 编辑

排序算法代码汇总

摘要: 原文:http://blog.csdn.net/Sunboy_2050/archive/2010/06/03/5645831.aspx各种基本算法实现小结(五)—— 排序算法(均已测试通过)*选择排序|____简单选择排序 |____堆排序 |____归并排序*交换排序|____冒泡排序 |____快速排序*插入排序|____直接插入排序 |____折半排序 |____希尔排序*分配排序|____箱排序 |____基数排序======================================================================简单排序算法1、 冒泡排序测试环境 阅读全文

posted @ 2011-05-19 16:04 伪君 阅读(1382) 评论(0) 推荐(0) 编辑

pch文件的使用(原作者太逗了)

摘要: http://blog.csdn.net/Kuntakimp/archive/2009/02/24/3930694.aspx预编译头文件 今天在改一个很大的程序,慢慢看,慢慢改。突然发现一个.c文件,里面什么也没有, 就几个头文件,我一看,我靠,这不是把简单的问题搞复杂了吗,随手删掉那个c文件。 结果不能编译了,我靠: fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\': No such file or directory 怎么rebuild all都不行。 上网查了一下,才搞懂 阅读全文

posted @ 2011-05-19 14:28 伪君 阅读(1518) 评论(0) 推荐(0) 编辑

CONST的学问C&&C++

摘要: C语言const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。 C中CONST的使用:虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。问题:const变量 & 常量为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?const int n = 5;int 阅读全文

posted @ 2011-05-19 11:26 伪君 阅读(228) 评论(0) 推荐(0) 编辑

CFileDialog 构造函数

摘要: http://www.cppblog.com/yefuhai/archive/2008/02/06/42568.htmlCFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* 阅读全文

posted @ 2011-05-19 10:06 伪君 阅读(454) 评论(0) 推荐(0) 编辑

2011年5月17日

进程与线程

摘要: 进程和线程是两个相对的概念,通常来说,一个进程可以定义程序的一个实例(Instance)。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。每个进程中至少有一个线程在执行其地址空间中的代码。如果没有线程执行进程地址空间中的代码,进程也就没有继续存在的理由,系统将自动清除进程及其地址空间。多线程的实现原理创建一个进程时,它的第一个线程称为主线程(Primar 阅读全文

posted @ 2011-05-17 10:24 伪君 阅读(200) 评论(0) 推荐(0) 编辑

线程同步

摘要: 临界区(criticalSection)又称阻塞,它能够使一段代码只由一个线程来执行,其它线程被挡在这段代码之外,直到第一个线程执行完代码。临界区的使用主要涉及如下API函数:initializeCriticalSection(), 在临界区首次使用之前,用此函数进行初始化。deleteCreticalSection(), 在临界区不再使用之前,用此函数释放临界区。enterCriticalSection(), 在初始化之后,用此函数进入阻塞。leaveCriticalSection(), 在代码执行完之后,用此函数解除阻塞。互斥(mutex)互斥比较类似阻塞,关键在于互斥可以跨进程的线程同步 阅读全文

posted @ 2011-05-17 10:23 伪君 阅读(224) 评论(0) 推荐(0) 编辑

2011年5月16日

堆和栈

摘要: 堆和栈的区别一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。4、文字常量区 — 常量字符串就是放在这里的,程序 阅读全文

posted @ 2011-05-16 11:22 伪君 阅读(138) 评论(0) 推荐(0) 编辑

extern "c"

摘要: 1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改为extern c 阅读全文

posted @ 2011-05-16 09:12 伪君 阅读(217) 评论(0) 推荐(0) 编辑

导航