摘要: 二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的个数、求二叉树的高度、求二叉树中两个节点的最近公共祖先、打印和为某一值的全部路径、求某一节点是否在一个树中等等。再详细的说这些面试题之前,不妨先看一下几种常见的二叉树:完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~ 阅读全文
posted @ 2012-12-30 19:03 _** 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 一、什么是操作符重载操作符重载可以分为两部分:“操作符”和“重载”。说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符。我们不妨先直观的看一下所谓的操作符重载: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int a = 2 , b = 3; 8 float c = 2.1f , d = 1.2f; 9 cout<<"a + b = "<<a+b< 阅读全文
posted @ 2012-12-30 19:01 _** 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个平面(编码范围是U-00000000~U-0000FFFD),称为BMP(Basic Multilingual Plane)或Plane 0,为了向后兼容,其中编号为0~256的字符和Latin-1相同。UCS编码通常用U-xxxxx 阅读全文
posted @ 2012-12-30 18:56 _** 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 2.main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题。我们的汇编和链接步骤是:$ as hello.s -o hello.o$ ld hello.o -o hello以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件:$ gcc -S main.c$ gcc -c main.s$ gcc main.o-S选项生成汇编代码,-c选项生成目标文件,此外在还讲过-E选项只做预处理而不编译,如果不加这些选项则gcc执行完整的编译步骤,直到最后链 阅读全文
posted @ 2012-12-30 18:53 _** 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 3.变量的存储布局 首先看下面的例子:例19.2.研究变量的存储布局#include <stdio.h>const int A = 10;int a = 20;static int b = 30;int c;int main(void){ static int a = 40; char b[] = "Hello world"; register int c = 50; printf("Hello world %d\n", c); return 0;}我们在全局作用域和main函数的局部作用域各定义了一些变量,并且引入一些新的关键字const、 阅读全文
posted @ 2012-12-30 18:53 _** 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 1.函数调用我们用下面的代码来研究函数调用的过程。例19.1.研究函数的调用过程int bar(int c, int d){ int e = c + d; return e;}int foo(int a, int b){ return bar(a, b);}int main(void){ foo(2, 3); return 0;}如果在编译时加上-g选项那么用objdump反汇编时可以把C代码和汇编代码穿插起来显示,这样C代码和汇编代码的对应关系看得更清楚。反汇编的结果很长,以下只列出我们关心的部分。$ gcc main.c -g$ objdump -dS a.out ...08048394 阅读全文
posted @ 2012-12-30 18:49 _** 阅读(304) 评论(0) 推荐(0) 编辑
摘要: MBCS(多字节码)早在Windows采用Unicode统一编码进行语言管理之前,Windows为了能够进行非ANSI标准字符的输出,于是采用两个字节来表示这些语言文字。因为这些双字节文字和ANSI是混和在一起的,为了加以区别,Windows将这些字符的最高位置为1(即这些双字节文字的每个字节都>=127),所以这种表示法可以表示 127x127 约一万多种非ANSI文字,其本上可以表示任何一种语言的常用文字了。于是,Windows为每一个区域版本,都制定了分别独立的文字编码,这就是MBCS(多字节码)。Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言 阅读全文
posted @ 2012-12-30 18:31 _** 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 1 #include "stdafx.h" 2 #include <iostream.h> 3 #include <stdlib.h> 4 5 6 void MyClose(FILE** lpFile) 7 { 8 *lpFile = NULL; 9 }10 11 void MyClose2(FILE* lpFile)12 {13 lpFile = NULL;14 }15 16 int main(int argc, char* argv[])17 {18 19 FILE* lpFile1 = (FILE*)0x123;20 21 FILE* lpFi 阅读全文
posted @ 2012-12-30 00:44 _** 阅读(328) 评论(0) 推荐(0) 编辑