程序员面试攻略
文章平均质量分 76
阿咪
深圳.湖北
展开
-
链表插入与删除操作中的头、尾指针
[题目]:有一个单链表,它的元素全部是整数。head和tail分别是指向该链表第一个元素(即头元素)和最后一个元素(即尾元素)的全局性指针。请实现调用接口如下所示的两个C语言函数: int Delete (element *elem);转载 2006-05-23 21:32:00 · 7368 阅读 · 0 评论 -
删除单链表的倒数第m个元素
[题目]: 给定一个单向链表(长度未知),请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素。实现这个算法,并为可能出现的特例情况安排好处理措施。“倒数第m个元素”是这样规定的:当m=0时,链表的最后一个元素将被返回。 如果沿从头至尾的方向从链表中的某个元素开始,遍历m个元素后刚好达到链表尾,那么该元素就是我们所要找的。这样,我们可以引出第一种办法:从头结点开始转载 2006-05-21 09:08:00 · 6794 阅读 · 1 评论 -
删除单向链表头元素
[题目]:下面是一个用来删除单向链表头元素的函数。请找出其中的漏洞并加以改正。 void RemoveHead (node *head) { free (head); head = head->next;} 这种调试纠错类的考题经常出现在程序设计面试中。我们可以从以下四个比较集中的方面进行检查和分析: 1.进入函数的数据是否转载 2006-05-25 18:08:00 · 4904 阅读 · 1 评论 -
删除特定字符
[题目]:用 C/C++语言编写一个高效率的函数来删除字符串里给定的字符集。这个函数的调用模型如下: viod removechars (char str[], char remove[])注意,remove中的所有字符都必须从str中删除干净。例如,如果str是"Battle of the Vowels: Hawaii vs. Grozny",remove是"aeiou"转载 2006-05-26 21:28:00 · 3937 阅读 · 0 评论 -
颠倒单词的出现次序
[题目]:请编写一个函数来颠倒单词在字符串里的出现顺序。例如,将字符串“Do or not do, there is no try.”转换为“try. no is there do, not or Do”假设所有单词都以空格为分隔符,标点符号也当作字符来对待。 对于这类颠倒字符或者单词的处理,我们通常的办法是采用一个临时缓冲区,将识别出来的字符或者单词写道这个缓冲区里,最后把缓冲转载 2006-05-30 19:43:00 · 3334 阅读 · 0 评论 -
最低公共祖先
[题目]:已知二元搜索树(Binary Search Tree)上两个结点的值,请找出它们的公共祖先。你可以假设这两个值肯定存在。这个函数的调用接口如下所示: int FindLowestCommonAncestor(node *root, int value1, int value2); 根据树的存储结构,我们可以立刻得到一个这样的算法:从两个给定的结点出发回溯,两条回溯路线转载 2006-06-07 13:57:00 · 3799 阅读 · 2 评论 -
常见的字符串面试题
基本上求职者进行笔试时没有不考字符串的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。我曾不止一次在笔试或面试时遇到下面几道试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。不能忽视这些细节,因为这些细节会体现你在操作系统、软件工程、边界内存处理等方面的知识掌控能力。一、整数与字符串之间的相互转换1.将字符串转换成整数 例如原创 2007-01-23 15:19:00 · 10407 阅读 · 4 评论