- 博客(37)
- 资源 (14)
- 收藏
- 关注
原创 哈希表一个简单的实现
hash table(哈希表) 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下
2008-03-29 15:20:00 890
转载 随机数函数
标准库 (被包含于 中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void); 从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed); 参数seed是rand()的种子,用来初始化rand()的起始值。 可以认为rand()在每次被
2008-03-29 14:38:00 1279
转载 虚继承之单继承的内存布局
C++2.0以后全面支持虚函数与虚继承,这两个特性的引入为C++增强了不少功能,也引入了不少烦恼。虚函数与虚继承有哪些特性,今天就不记录了,如果能搞了解一下编译器是如何实现虚函数和虚继承,它们在类的内存空间中又是如何布局的,却可以对C++的了解深入不少。这段时间花了一些时间了解这些玩意,搞得偶都,不过总算有些收获,嘿嘿。先看一段代码class A{ virtual aa(){};};
2008-03-28 23:01:00 919
转载 union妙用
试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式?分析:作为一个计算机相关专业的人,我们应该在计算机组成中都学习过什么叫Little endian和Big endian。Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big endian认为第一个字节是最高位字节(按照从低地址到高地址
2008-03-28 12:06:00 609
转载 C/C++ 程序设计员应聘常见面试试题深入剖析
C/C++ 程序设计员应聘常见面试试题深入剖析1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数
2008-03-28 10:53:00 825
转载 strlen 和sizeof
Sizeof与Strlen的区别与联系 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。 sizeof还可以用函数做参数,比如: sho
2008-03-26 16:43:00 580
转载 atexit 函数
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是一个函数
2008-03-26 09:26:00 821
原创 删除字符串重复的字符
/* delete adjacent chars from a string, very simple(references from others)*/char *DeleteAdjacent(char *str){ assert(str != NULL); int len = strlen(str); for (int i = 1, j = 0; i { if (str[i]
2008-03-25 22:05:00 791
转载 C 和 C++ 字符串字面量的比较
C 和 C++ 字符串字面量(String Literal)既有相同之处,又有一些区别。了解这些内容对于加深字符串字面量以及相关一些概念的理解、澄清一些常见的概念误区不无助益。本文以普通字符串字面量 "hello" 为例总结说明如下。如果你发现了本文中的错误,或者对本文有什么感想或建议,可通过 whyglinux AT gmail DOT com 邮箱和作者联系。相同点: 字符串字面
2008-03-25 21:01:00 858
原创 归并排序
/**//* merge sort algorithm */template class T>void Merge(T *input, int start, int end)...{ int mid = (start + end) / 2 ; int n1 = mid - start + 1; int n2 = end - mid; int *temp1 = ne
2008-03-25 19:51:00 502
原创 希尔排序
shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了./**//* shell sort algorithm *//**//* 开始增量为数组长度的一半,然后一次减少一半,直到为1
2008-03-25 17:03:00 550
转载 用C++设计一个不能被继承的类
题目:用C++设计一个不能被继承的类。分析:这是Adobe公司2007年校园招聘的最新笔试题。这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目。在Java中定义了关键字final,被final修饰的类不能被继承。但在C++中没有final这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类
2008-03-24 11:37:00 595
转载 判断数是有符号还是无符号
#includestdio.h>int main()...{ //unsigned int a = 100; //待判断数 int a = 100; int b = -1; //参照数 if(a0) ...{ printf("有符号数"); } else
2008-03-23 21:56:00 1124 1
原创 链表的翻转实现
/**//************************************************************* * FileName: reverseLink.cpp * Description: implemention for the reverse of a link * Author: Cui Xiaofeng * Date: 2008/03/22*****
2008-03-22 19:57:00 583
原创 堆排序
堆的定义: n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存
2008-03-22 15:10:00 638
转载 关联--依赖、组合--聚合 联系与区别
关联--依赖、组合--聚合 联系与区别:依赖是比关联弱的关系,关联代表一种结构化的关系,体现在生成的代码中,以java为例: 若类A单向关联指向类B,则在类A中存在一个属性B b。 若类A依赖类B,则不会有这个属性,类B的实例可能存在于某个方法调用的参数中,或某个方法的局部变量中。例如代码: 依赖:----存在于某个方法调用的参数中,或某个方法的局部变量
2008-03-21 00:00:00 708
转载 回溯法实现
一、回溯法:回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都
2008-03-20 21:45:00 1672 2
转载 回溯法介绍
回溯法有时会遇到这样一类题目,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点 在于其程序结构明确,可读性强,易于理解,而且通过对问题的分析可以大大提高运行效率。但是,对于可以得出明显的递推公式迭代求解的问题,还是不要用回溯 法,因为它花费的时间比较长。回溯法的基本思想对于用回溯法求解的问题,首先要将问题进行适当的转化,得出状态空间树。 这
2008-03-20 21:08:00 10540 5
原创 快速排序
快速排序的主要思想就是:将待排序数组以某一个元素为阈值分为两个子列,一个子列包含所有比改阈值小的元素,另一个子列反之。这样只要将这两个子列排好序,整个数组也就排好序了。这里有一个关键的子过程就是划分的过程Partition,一般可以选择数组中任意的元素作为划分阈值,这里选择的是数组中最左端的元素。 Partition使用了二分查找类似的思想:使用两个索引器从数组的两端进行遍历,左
2008-03-20 19:16:00 730
原创 Unsigned vs. Signed
Unsigned vs. Signed 在定义整数变量的型态的时候可以加上 unsigned 或是 signed, 例如unsigned charunsigned short (int)unsigned long (int)unsigned int----------signed charsigned short (int)signed long (int)
2008-03-19 20:01:00 653
转载 KMP算法的实现
KMP算法是一种用于字符串匹配的算法,这个算法的高效之处在于当在某个位置匹配不成功的时候可以根据之前的匹配结果从模式字符串的另一个位置开始,而不必从头开始匹配字符串.因此这个算法的关键在于,当某个位置的匹配不成功的时候,应该从模式字符串的哪一个位置开始新的比较.假设这个值存放在一个next数组中,其中next数组中的元素满足这个条件:next[j] = k,表示的是当模式字符串中的第j + 1个(
2008-03-19 19:59:00 745 1
原创 signed 和 unsigned
在编程的时候,会不小心把unsigned和signed类型一起混用 ,这样往往会出现问题,如下所示: unsigned int i=1; int j= -1; if (i>j) printf("i>j/n"); else printf("i程序会输出:i 所以,以后再比较两个数时,需要首先考虑这两个数的数据类型是否相同。不同时,需要人为转换。这样才不会出现上述
2008-03-19 19:46:00 484
转载 字节对齐
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只
2008-03-16 16:02:00 573
原创 求两个数的最大公约数和最小公倍数
/**//************************************************************ * FileName: gcd-lcm.cpp * Description: 求得两个数的最大公约数和最小公倍数 * Author: Cui Xiaofeng * Date: 2008/3/15
2008-03-15 10:04:00 796 1
原创 基本排序算法(选择,冒泡,一般插入,二分插入)源码
#include cstdlib>#include iostream>#include cassert>using namespace std;/**//* output array elements */template class T>void Print(const T *in, int n)...{ for (int i = 0; i n; i++) ...{
2008-03-14 12:29:00 627
转载 字符串常量与字符串数组
其实也就是char sz[] = "string"; 和char *psz = "string"; 这两种字符串的赋值之间的区别。首先来说说char sz[] = "string"; 这条语句,该语句是按照数组的形式来一个个存放的,编译器将其解释为char sz[] = {s,t,r,i,n,g,/0}; 如果在函数内部出现的话,这几个字符将存放在堆栈中
2008-03-13 23:27:00 810 1
转载 字符串常量
当一个字符串常量出现在表达式中,它的值是个指针常量。编译器把这些指定字符的一份拷贝存储于内存的某个位置,并存储一个指向第一个字符的指针。但是,当数组名用于表达式中时,它们的值也是指针常量。我们可以对它们进行下标引用、间接访问、指针运算。让我们来看一例:"xyz"+1; 对于绝大多数程序员而言,它看上去象垃圾。它好象试图在一个字符串上面执行某种类型的加法运算。但是当你
2008-03-13 23:26:00 967
转载 c/c++数组名和指针区别深入探索
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。 想必这种误解的根源在于国内某著名的
2008-03-13 20:09:00 1151 1
原创 小心数组的大小
int a[] = {1, 3, 5, 6}//sizeof(a) = 16;test(a);void test(int b[]){ //sizeof(b) = 4;} 当数组传递给函数时,传递的是指针,尽管参数是数组形式.故在函数中,sizeof(b)是指针的大小4.
2008-03-13 20:00:00 534
转载 10 Steps to Better C++
==============================================================================C-Scene Issue #310 Steps to Better C++Chad Loder==========================================================================
2008-03-12 19:32:00 707
转载 专家看台:纯做技术是自娱自乐 抛开技术做技术才是出路
【CSDN 12月13日】 短短一生不过数十载,对于很多人而言,作IT、作技术只是生命中的某一段,并非所有。而无论是换工作还是换行业,只是一种形式而已,最终我们追求的是成功、是荣誉、是收获。于是在年轻的这几年里,作为技术人员理应认真思考自己将来的出路并为之而脚踏实地的去积累。“01年大学毕业,去了老师开的一家网络教学软件公司,作教育软件;04年,首次创业,作了个休闲游戏公司,经验以及资金问
2008-03-12 15:40:00 553
转载 双绞线网线线序解析
局域网就是将单独的微机或终端,利用网络相互连接起来,遵循一定的协议,进行信息交换,实现资源共享。网线常用的有:双绞线、同轴电缆、光纤等。双绞线可按其是否外加金属网丝套的屏蔽层而区分为屏蔽双绞线(STP)和非屏蔽双绞线(UTP)。从性价比和可维护性出发,大多数局域网使用非屏蔽双绞线(UTP-Unshielded Twisted pair) 作为布线的传输介质来组网。 UTP网线由一定长度的双绞
2008-03-09 09:34:00 1038
转载 函数调用规范
函数调用规范 当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后
2008-03-06 16:54:00 519
转载 subversion安装与使用
一、 软件下载并安装 1、 服务器 1 )下载 Subversion 服务器端软件,网址: http://subversion.tigris.org/ 。在下载页面找到 Windows NT, 2000, XP and 2003 , 然后点击相关连接进入即可下载,目前最新版本是 svn-1.3.2-setup.exe 。 2 )下载后,运行 svn-1.3.2-setup.exe 直到
2008-03-02 12:35:00 710
转载 给c++程序员的一份礼物——常用工具集
给c++程序员的一份礼物——常用工具集【声明】如需复制、传播,请附上本声明,谢谢。原文出处:http://morningspace.51.net/,moyingzz@etang.com 所谓"工欲善其事,必先利其器",从程序员的角度来讲,好工具的使用总会给人带来事半功倍的效果。面对众多工具/软件,我们应该如何取舍呢。前不久,笔者在csdn的c++论坛发了一篇贴文,以期能征求大家的广泛
2008-03-01 22:21:00 827
转载 c#局部类型
1. 什么是局部类型?C# 2.0 引入了局部类型的概念。局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。局部类型适用于以下情况:(1) 类型特别大,不宜放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(3) 需要多人合作编写一个类。局部类型是一个纯语言层的编译处理,不影响任何执行机制——事实上C#编
2008-03-01 19:50:00 727
大内高手(详细的内存知识)
2008-09-10
The.Linux.Networking.Architecture_Design.and.Implementation
2007-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人