编程之美
seanyxie
谢思源的个人博客
展开
-
面试题(循环链表)
题目为:对于普通的单向链表,如果实现确定其内部有一个环,如何确定何处出现环路的?单向链表每个节点中只有data和next两个字段。 (单向链表含环路,不要总是想到“0”型环路,还要想到“6”字型环路) 原本听到这道题时,我首先想到的笨办法就是:建一个足够大的一维数组,,每个位置放Node*类型指针。而后开始遍历单向链表,遍历过一个节点后就将该节点的指针添加到这个一维数组中,随后与该数组前边的所有元素进行一次遍历比较,如果有重复,则定位到了这个出现环路的节点。 但是后来面试官说:转载 2010-08-19 23:48:00 · 11557 阅读 · 2 评论 -
面试题(Qt + 函数指针)
<br />面试官问的问题是:Qt信号槽机制,你觉得可以用什么策略来取代? 因为signal-slot本身是一个顺序执行的过程,只有执行完slot之后,才会执行emit的下一条语句。其策略类似于函数调用,只不过由于其在QObject中架设了一个大的结构,这导致其执行效率不是很高,比直接的函数调用要慢10倍(忘记拿看的数据了)。平时在做项目时:如果可以我一般是用写纯虚接口的方式来替代signal-slot。 面试官又问:你有没有想过用函数指针来替代? 汗一个先,以前真没想过,而且函数指针用的也很少,今天专转载 2010-08-19 23:19:00 · 5177 阅读 · 0 评论 -
大数相乘
我这里采取的方法是将大数保存在字符串中,然后将两个字符串逐位相乘,再进位和移位。应该还有效率更高的代码。 源代码:#include #include #include #define N 100 /* *将在数组中保存的字符串转成数字存到int数组中 */ void getdigits(int *a,char *s) { int i; char digit; int len = strlen(s); //对数组初始化 fo转载 2010-10-19 09:23:00 · 1450 阅读 · 0 评论 -
找出孤独的一个(IBM面试题)
小明有N双袜子,丢了一只,怎么样才能快速找到丢掉的那只袜子?假设每双袜子都不一样,用一个7位的数字来表示,相同的袜子,代表的数字相同,例如他有两双袜子,分别用55和66这两个数字来代替表示,则表示成二进制就是110111,110111,1000010,则丢掉的那只是66号袜子。请问怎么快速找出来丢掉的是66号袜子呢?方法:从头到尾遍历所有袜子的编码,然后把每一个袜子的编码相异或,最后留下来的那个就是丢掉的那只袜子的编码。#include using namespace std; void main()原创 2010-11-16 13:32:00 · 2025 阅读 · 0 评论