摘要: 面试例题:输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?(中国台湾著名硬件公司2007年11月面试题)(自程序员面试宝典第二版p89)程序实现如下:分析:例如输入为8的时候得到的zigzag数组为:从上面的标记的方向应该可以看到,这个数组就是按照对角规律进行的,那么我在写程序的时候,会用一个两层的for来填充这个数组。为了从这个规律入手,我们在考虑这个数据的填充是要理清一个思路,不要按那两层的for循环考虑,只需要考虑第(i,j)位置与(i,j)的关系就OK了,那么对应的填充函数就填充相应的(i,j)的函数 阅读全文
posted @ 2013-08-18 17:04 凡程子 阅读(2852) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-03-06 10:51 凡程子 阅读(4452) 评论(2) 推荐(0) 编辑
摘要: PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;Class::age = 2;for( i = 0; i < 10; i++ ) ...for 阅读全文
posted @ 2013-03-02 11:54 凡程子 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: 所谓重载,就是重新赋予新的含义,函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。运算符的重载主要存在两种形式,一种是作为类的成员函数进行使用,另一种则是作为类的友元函数进行使用。运算符的重载的形式为:返回类型 operator 运算符符号(参数说明) { //函数体的内部实现 }例如,能否用“+”号进行两个复数的相加,在C++中不能在程序中直接用运算符“+”对复数进行相加运算,用户必须自己设法实现复数相加。例如用户可以通过定义一个专门的函数来实现复数相加。[cpp]view plaincopy/*实现复数类中的运算符重载定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘. 阅读全文
posted @ 2013-03-01 19:56 凡程子 阅读(1658) 评论(0) 推荐(0) 编辑
摘要: 接上文--->【每日算法】C语言8大经典排序算法(1)二、插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。 插入排序一般意义上有两种:直接插入排序和希尔排序,下面分别介绍。3、直接插入排序基本思想:最基本的操作是将第i个记录插入到前面i-1个以排好序列的记录中。具体过程是:将第i个记录的关键字K依次与其前面的i-1个已经拍好序列的记录进行比较。将所有大于K的记录依次向后移动一个位置,直到遇到一个关键字小于或等于K的记录,此时它后面的位置必定为空,则将K插入。图示:C 阅读全文
posted @ 2013-01-25 13:30 凡程子 阅读(17514) 评论(5) 推荐(5) 编辑
摘要: 算法一直是编程的基础,而排序算法是学习算法的开始,排序也是数据处理的重要内容。所谓排序是指将一个无序列整理成按非递减顺序排列的有序序列。排列的方法有很多,根据待排序序列的规模以及对数据的处理的要求,可以采用不同的排序方法。那么就整理下网上搜索的资料,按自己的理解,把C语言的8大排序算法列出来。普通意义上,排序算法可以分为三大类:1 交换类排序法2 插入类排序法3选择类排序法一.交换类排序法所谓交换排序法是指借助数据元素之间互相交换进行排序的方法。冒泡排序与快速排序法都属于交换类排序方法。1、冒泡排序(BubbleSort)冒泡排序的基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。 阅读全文
posted @ 2013-01-18 22:48 凡程子 阅读(77516) 评论(5) 推荐(4) 编辑
摘要: 先上题:下列运算符都可以被友元函数重载的是:A)=,+,-,\B)[],+,(),newC)->,+,*,>>D)<<,>>,+,*正确答案为D我们知道,在运算符重载,友元函数运算符重载函数与成员运算符重载函数的区别是:友元函数没有this指针,而成员函数有,因此,在两个操作数的重载中友元函数有两个参数,而成员函数只有一个。因此,我们可以总结如下:1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中含有两个参数。对单木运算符来说,成员函数重载运算符的函数参数表中没有参数,而用友元函数重载运算符函数参数表 阅读全文
posted @ 2013-01-17 17:37 凡程子 阅读(3653) 评论(1) 推荐(0) 编辑
摘要: 今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。 首先,我们看看前序、中序、后序遍历的特性:前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树后序遍历: 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点一、已知前序、中序遍历,求后序遍历例:前序遍历: GDAFEMHZ中序遍历: ADEFGHMZ画树求法:第一步,根据前序遍历的特点,我们知道根结点为G... 阅读全文
posted @ 2013-01-07 14:29 凡程子 阅读(47224) 评论(2) 推荐(11) 编辑
摘要: 今天在准备计算机等级考试的时候,被一系列的友元函数给搞混了,现在结合自己的理解和查阅的资料来总结下友元函数和友元类。百度百科上对友元函数是这样定义的:友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。为什么会有友元函数?结合着类的特性和类中一般成员函数,我们可以这样理解:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为 阅读全文
posted @ 2013-01-05 22:12 凡程子 阅读(25866) 评论(0) 推荐(1) 编辑
摘要: 今天在做一道面试题的时候遇到一个纯虚函数的概念,就翻了下书,查资料,对比下虚函数,现在整理一下和大家分享:什么是虚函数?那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。虚函数声明如下:virtual ReturnType FunctionName(Parameter);虚函数必须实现,如果不实现,编译器将报错,错误提示为:error LNK****: unresolved external symbol " 阅读全文
posted @ 2013-01-02 22:23 凡程子 阅读(36436) 评论(2) 推荐(9) 编辑
View Code