自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Andrew's Blog

keep moving, don't settle

  • 博客(17)
  • 资源 (3)
  • 收藏
  • 关注

原创 几种常见的重要数据结构总结

<br />栈的表示<br />1. 数组<br />2. 链表(优点:无需指定大小,不存在栈溢出等情况的处理)<br /> <br />队列表示<br />1. 数组(构造成循环队列以提高空间使用效率)<br />2. 链表 <br /> <br />二叉树 (满二叉树、完全二叉树、稀疏二叉树等)<br /><br />1. 数组(二叉树按照层次编号,空缺的孩子结点也要保留编号,这使得当二叉树比较稀疏时,空间利用率很低)<br />2. 链表(二叉链表(三个域:左孩子,右孩子和结点的值),三叉链表(多一个

2010-07-30 22:10:00 9091

转载 C++操作符重载

<br />C++编程语言发展至今已经成为了开发领域中一个重要的应用语言。其中有很多比较高深的内容还值得我们在实践中去不断的探索。在这里我们就先从对C++操作符重载的应用方式的了解来进一步解读这一编程语言。C++指针与引用之间有何不同之处C++文件流操作具体实现方法探讨C++ enum枚举代码示例剖析C++动态数组应用方式探讨各种C++继承方式范例分析<br />一、为什么使用C++操作符重载?<br />对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自

2010-07-28 21:05:00 958

转载 overloading & overriding

重载(Overloading)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

2010-07-28 11:33:00 879

原创 printf函数行为探究

<br />C编译器对于一些行为并没有统一的规定,而且编程者不能祈求编译器永远按照你的想法理解程序,所以在写高质量代码的时候,有疑虑的表达最好换一种有把握的做法。<br />在编程的时候,遇到一条语句 printf("%d%d",a,a++);变量a的初始值为2,该语句打印出3,2着实让我费解了半天。<br />后来通过实验,理解了gcc下是怎么运作的(其他的编译器其实没有必要去深究了,写代码风格倒是要锤炼的)<br />printf从右向左扫描,然后从左向右输出!过程可以理解如下<br />print

2010-07-18 21:26:00 731

转载 让C++变得更加容易:偶尔可以工作的程序(未定义行为)

<br />《Dr.Dobb's 软件研发》第5期<br />Andrew Koenig  Barbara E. Moo<br />在C++编程中避免未定义行为是至关重要的。本文的两位作者向我们展示了一些无需牢记整个C++标准就可以使用的方法。  <br />引介  <br />我们常常会在新闻组里看到这样的C++提问:“下面的语句具有良好定义的行为吗?”或者更为天真(也更为直率)地问:“以下语句并不按预期的那样运行,我的编译器出了啥毛病?”  <br />有时答案是“给定的语句具有

2010-07-18 20:42:00 1153

原创 *a++和(*a)++区别 注意!!!

<br />我们通常定义一个整型指针变量a,那么*a是a指向的整型变量的值<br />如果要使该值自增,单独写一条语句:*a++;将会带来问题,因为优先级问题<br />所以要写成(*a)++; 或者++*a;因为单条语句中a++和++a并无区别。

2010-07-18 14:24:00 8478

原创 malloc函数和new操作(内含malloc新旧标准对比)

malloc函数和new操作均可以开辟一定的内存空间用以存储变量。但两者有以下几个不同:1. malloc函数需要指定开辟的字节数,而new操作自动开辟相应大小的内存空间。2. new操作返回指定类型的指针,而malloc函数返回void*,需要强制转换。3. 回收内存时,一般malloc函数对应free函数,new操作对应delete操作,否则会引起memory leaking。例如:例一      int *p=NULL;      p=new int; //p指向一个int型变量,如果某系统中size

2010-07-18 14:19:00 981

原创 静态链接库和动态链接库

C源程序到最后的可执行代码需要经过:预处理,汇编,编译,链接过程,链接的过程就是把编译好的目标代码(.o文件)和其他目标代码(比如几个目标文件链接成一个可执行程序)还有库文件链接起来组成一个可执行程序。通常我们写C程序的第一句代码都会是#include,用以包含进来标准输入输出的头文件,头文件用以定义一些常量和声明一些函数,最简单的程序莫过于。#includeint main(){ printf("hello world!/n"); exit(0);}那么我们在编译的时候

2010-07-11 11:41:00 4034

转载 Linux强大的IO重定向和管道功能(内含命令替换,实例:批量删除文件)

1. 标准输入与输出  我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。  我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:  $ cat config  将会

2010-07-10 22:00:00 3325

原创 Linux中Ctrl+C、Ctrl+D等按键操作&进程相关命令

在Shell中键入命令 ps -Al会在终端显示出所有进程的详细信息,比如PID,PPID以及对应的CMD等。例如:可以使用命令 kill pid来杀死某个进程,一般情况下,杀死父进程,子进程会继续运行,有些情况下用户希望杀死父进程同时也使子进程消亡,单纯的用(kill 父进程id)做不到,就会留下一些所谓的僵尸进程。键盘和shell的交互:Ctrl-c Kill foreground process 常用Ctrl-z Suspend foreground processCtrl-d Termina

2010-07-10 21:39:00 10504 1

原创 C程序编译过程详解(Linux based)

一个filename.c的源文件要变成可运行文件,需要经过以下几个过程。以HelloWorld.c为例。                             HelloWorld.c                                     |                                     | 预处理过程 gcc -E HelloWorld.c -o HelloWorld.i ,得到文件HelloWorld.i                           

2010-07-10 17:57:00 1186

原创 linux中几个代表目录的特殊标记

<br />. 代表当前目录,比如 cd .或者cd ./都是工作目录变更到当前目录,等于没变。<br />.. 代表上级目录<br />~ 代表用户的home目录<br />/ 代表系统根目录<br />pwd命令用于显示当前目录的绝对路径<br /> <br />ps:!!命令用于执行刚才执行过的命令

2010-07-10 10:36:00 3000

转载 linux find命令详解

<br />目录<br />版权声明<br />前言:关于find命令<br /><br />一、find 命令格式<br />1、find命令的一般形式为;<br />2、find命令的参数;<br />3、find命令选项;<br />4、使用exec或ok来执行shell命令;<br />二、find命令的例子;1、查找当前用户主目录下的所有文件;<br />2、为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;<br />3、为了查找系统中所有文件长度为0的

2010-07-10 10:32:00 722

转载 linux常用命令

1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。2. ls 查看目录或者文件的属*,列举出任一目录下面的文件eg: ls /usr/manls -la.d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。3. cp 拷贝文件eg: cp filename1 f

2010-07-09 22:10:00 555

原创 cat、more、less用于显示文件时的区别

<br />cat就是简单地将文件全部打印到标准输出上(除非输出重定向),并结束进程。<br />more也是将文件打印到标准输出,满页打印,按空格键翻页,如果到达末页,结束more进程。<br />less和more相似,也能浏览首页之外的内容,一般使用方向键导航,到达文件尾时提示End of file,在光标处输入q进程结束。<br />但是如果重定向输入到文件或者管道之类的,没有区别。

2010-07-09 21:53:00 1029

转载 cat命令简要

<br />Linux Cat命令用来读取短文件非常方便,如果一个文件非常大的时候,用页命令是比较方便的。下面一起来看看Linux Cat命令实际应用。<br />Linux Cat命令的用法:用cat命令查看文件:$ cat test.php;<br />$ cat -n test.php:在查看的时候加上行号;<br />Linux Cat命令还可以使用通配符:$ cat -n *.php,把所有的php文件都显示出来(顺序显示)<br />也可以这样:$ cat -n test.php tes

2010-07-09 14:49:00 959

转载 sort命令

sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!1 sort的工作原理sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。[rocrocket@rocrocket programming]$ cat seq.txtbananaapplepearorange[rocrocket@rocrocket programming]$ sort seq.txtappleba

2010-07-09 14:36:00 3511

Yacc+Lex快速入门

Lex和Yacc的入门必读 简单易懂 有实例

2009-04-12

五子棋算法(比较简单容易理解的算法)

五子棋的算法,这个算法比较容易理解,可以很容易地自己参考然后实现,不错的算法

2008-10-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除