上一页 1 2 3 4 5 6 7 8 ··· 22 下一页
摘要: 华为公司2014届校园招聘软件类上机考试样题 需进行上机考试的岗位:软件开发工程师、操作系统工程师、底层软件开发工程师、云计算开发工程师、DSP工程师 在线考试:机考系统的内核为VS2005及JDK1.7,使用Java答题时,类名必须为“Main”;使用C/C++答题时,使用VS2005支持的数据类型和函数。 题目类型:涉及数组、链表、指针、字符串、循环、枚举、排序等等。 考试时长:2小时 考试题目:3道题(共计320分),初级题(60分),中级题(100),高级题(160分),难度递增。 阅读全文
posted @ 2013-09-04 22:25 永不止步,永无止境 阅读(3763) 评论(3) 推荐(0)
摘要: 面试题39:求二叉树的深度、判断二叉树是否为平衡二叉树 小结: 根据平衡二叉树的定义,需要判断每个结点,因此,需要遍历二叉树的所有结点,并判断以当前结点为根的树是否为二叉树; 用后序遍历的方式,先判断左右子树是否为平衡的,在判断当前节点; 可以对每个结点求深度,根据深度判断,如函数IsBanlancedTreeBasic所示,但这种方法存在重复遍历,效率较低; 后序遍历时,一边判断是否为平衡二叉树,一边求而二叉树的深度,这样就避免了重复遍历,如函数IsBanlancedTree所示。 阅读全文
posted @ 2013-09-03 14:49 永不止步,永无止境 阅读(835) 评论(0) 推荐(0)
摘要: 找出数字在排序数组中出现的次数。 注意几点: 一开始试图用size_t类型表示数组的下标begin、end,到那时这样做在end = 0时,end - 1是size_t类型的最大值,仍然满足begin = end,但此时将会对sortedArray数组中下标为size_t类型的最大值的元素,会出现访问越界;因此,对于数组小标,不要为了保证是整数二用size_t类型,用int类型比较好。 若用int型表示,就不需要用STATUS的状态标志,下面的程序中没有修改这一点。 阅读全文
posted @ 2013-09-02 16:49 永不止步,永无止境 阅读(365) 评论(0) 推荐(0)
摘要: 八大排序方法汇总(选择排序-简单选择排序、堆排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序,归并排序,计数排序)。 插入排序还可以和折半查找相结合,提高查找插入位置的速度,也就是折半插入排序,此处没有给出这种方法的相应代码。 对排序算法,可从以下几个方面评价: 时间复杂度; 空间复杂度; 稳定性。 阅读全文
posted @ 2013-08-22 15:35 永不止步,永无止境 阅读(544) 评论(0) 推荐(0)
摘要: 循环链表、数组解决约瑟夫环问题的比较。 注意几点: 循环链表的建立不难,在删除循环链表中元素时,用pCur->next != pCur判断结束; 每一轮计数开始,将计数器归1,counter = 1; 并将指针指向下一个元素,pCur = pCur->next; //从下一个元素开始计数 阅读全文
posted @ 2013-08-18 21:34 永不止步,永无止境 阅读(412) 评论(0) 推荐(0)
摘要: 链式存储的队列的实现,包括队列的初始化、销毁、入队、出队、测长、获取队首元素等基本操作。 注意几点: 队列结构,包含一个头指针、一个尾指针,初始化为空队列,空队列的队首指针与队尾指针相同; 链表包含头结点,否则在队列为空以及队列只有一个元素时都是队尾至真与队首指针相等,无法区分 有动态分配空间,就要释放,本实现中用DestoryQueue释放动态内存; 带有头结点,队列的第一个元素在头指针指向的结点中,对非空队列,队列中第一个元素为q.front->next->data; 而非q.front->data; 在出队以及获取队首元素时,要考虑队列空否,本实现中用assert( !IsQueueEmpty(q) ); 检查。 阅读全文
posted @ 2013-08-18 20:16 永不止步,永无止境 阅读(1025) 评论(0) 推荐(0)
摘要: 两个栈实现一个队列,包括队列的初始化、销毁、入队、出队、测长、判断空否、显示队列元素等操作。 小结: 用两个栈作为队列结构,一个用于入队,另一个作为出队的辅助栈,如代码中栈sEnQueue、sDeQueue为队列结构的两个成员; 初始化队列,即两个栈的初始化,如代码中函数InitQueue; 队列销毁,即两个栈的销毁,如代码中函数DestoryQueue; 出队,若sDeQueue为空,则将sEnQueue的元素倒入sDeQueue,然后取其栈顶元素;若非空,直接取其栈顶元素; 入队,即sEnQueue的入栈操作; 队列测长,即两个栈的长度值之和; 注意队列的显示总,两个栈的显示顺序不同,才能得到正确的显示。 阅读全文
posted @ 2013-08-18 19:11 永不止步,永无止境 阅读(427) 评论(0) 推荐(0)
摘要: 顺序存储的栈的缺点: 存储空间有限,当栈中元素个数超出定义的栈的MAXSIZE时,再进行插入,就会出现访问越界。当然,可以通过realloc重新分配内存以扩大容量,不过这样不但会增加复杂度,而且要求存储空间是连续的,当内存中没有这么大的连续空间时,就会发生内存溢出; 为了解决这个问题,链式存储的栈不失为好的办法,下面是用链表实现的栈。 用链式存储是实现栈时,注意几点: 将链表头结点作为栈顶,而且也不需要附加的头结点; 栈的结构只有一个链表指针; 栈的初始化,就是将链表头结点置为NULL; 栈的销毁,就是链表的销毁; 栈的push、pop,就是在链表的头部进行插入、删除的操作,在pop时,注意对空栈的处理,下面的代码中用assert(NULL != s.top);检查是否为空; 求栈的长度的操作,就是求链表长度; 获取栈顶元素,就是获取链表头结点元素,注意对空栈的处理,下面的代码中用assert(NULL != s.top);检查是否为空。 阅读全文
posted @ 2013-08-18 16:13 永不止步,永无止境 阅读(622) 评论(0) 推荐(0)
摘要: 顺序存储的栈的实现,包括初始化、销毁、push、pop、求长度、显示栈中元素、获取栈顶元素等基本操作。 注意: 通过动态申请的空间一定要销毁,本实现在InitStack函数中申请空间,使用完后在函数DestoryStack中销毁; 栈显示时,注意下标的更新不是在while条件判断时,应在显示元素之后,如下: 阅读全文
posted @ 2013-08-18 15:40 永不止步,永无止境 阅读(352) 评论(0) 推荐(0)
摘要: 素数、最大公约数、最下公倍数、质因数分解都是与素数相关的,解决了素数的问题,其他的都可以此为基础求解。 小结: 求1到n之间的素数的基本方法是通过遍历2到sqrt(n),判断每个数是否是素数来得到,但这种方法效率很低;比较高效的解法是通过筛选法求解,如下面代码中函数GetPrimeUnderNBySieve; 最大公约数可通过GCD递归定理求解,通俗的说法就是辗转相除法,《算法导论》中有详细的说明; 最下公倍数可通过最大公约数得到,公式为:LCM(a,b) = a*b / GCD(a,b); 质因数分解可通过质数表得到,如下面代码中函数GetPrimeFactorByPrimeTable所示; 另外,最后一种因数分解代码是最简练的,如函数Decomposition所示, 阅读全文
posted @ 2013-08-18 11:37 永不止步,永无止境 阅读(870) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 22 下一页