⑴ 《微软面试题》判断2个单向链表的是否有交叉点
问题可归结为,如有相同end节点,则有回交叉点答。
[cpp] view plain
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<a href="http://www.000webhost.com/534765.html" target="_blank"><img border="0" src="http://www.000webhost.com/images/banners/120x60/banner1.gif" width="120" height="60"></a>
⑵ 求C/C++面试题,好的话加分!!尽快!!!
我有本书《程序员面试宝典》,发给你看看 。要是觉得好的话别忘了给分
⑶ 程序猿节,出一道我面试入微软被问到的题:如何用两个变量,验证一个链表有没有循环。谁能告诉我答案
给你个思路:用p、q同时指向头结点,p每次前进一个节点,q前进两个节点,如果链表有循环总有pq再次相遇的时候
⑷ 华为面试题:怎么判断链表中是否有环
设置复两个指针,开始都指向制链表头,然后其中一个指针每次向前走一步,另一个指针每次向前走两步,如果快的遇到NULL了,证明该链表中没有环,如果有环,快的指针每次都要比慢的多走一步,最终两个指针会相遇,(注意:这里快指针不会跳过慢指针而不相遇,因为它每次都只比慢指针多走一个单位)booljudge(list*head){if(head==NULL){returnfalse;//没有环}list*pFast=head;list*pSlow=head;while(pFast-next!=NULL&&pFast-next-next!=NULL){pFast=pFast-next-next;pSlow=pSlow-next;
⑸ 面试题 怎么设计arraylist
我说下我的看法,如有不当,欢迎指出。这里不考虑JDK里面HashSet实现(JDK里,HashSet借助HashMap实现,是一个特殊的HashMap,所有Value都是一个Dummy Object),只单纯从数据结构角度考虑。主要关注HashSet和ArrayList的异同。ArrayList是基于数组实现的List,添加元素时直接append到链表末尾,元素可以重复。HashSet的元素不能重复,而判断是否重复是根据元素的Hash值和equals比较。所以借助ArrayList实现HashSet,只需要重写ArrayList与HashSet不同的方法,比如add,而相同的方法可以直接沿用。
⑹ C语言最后一轮面试 技术类都问些什么问题
1、是应届生还是已经有工作经验了。如果是应届生,一般不会问很多关于专业方面的东版西(最多会问权一些简单的原理性的东西),然后会考察反应能力跟学习能力,英语的听说读写(搞技术的英语很重要,用的软件,看的资料基本都是英文)。还会问一些个人家庭情况和未来的打算(就是想知道你会不会干几个月就离职了)一般应届生谈薪资的不多,因为公司一般都是有标准的。
2、如果是有工作经验,会问以前做过什么项目,会问一些非常专业的问题(比如提出一个计划怎么实现,达到什么效果)。具体的面试环节看各个公司的规模,有的很简单,有的很复杂。
⑺ ~~~~~常见的数据结构面试题,帮忙解答!!
1.q->next=s;
s->next=p;
2.A/C(这题是考察对概念的理解,可参考第7题,“顺序表才能随即存取,回而链表不可以”)
3.D
4.C
5.B
6.A
7.A(此题绝对答选A,因为链表只能根据他的前一个结点才能找到下一个结点,不具备随即访问元素的功能)
8.C
9.n-i; n-i+1
声明:本人正在学习数据结构,以上问题都经过反复查询资料(还是比较有信心滴),假如有以为可以问我……
⑻ 一道c++的笔试题(链表找倒数第k个节点)
输入链表的时候利用栈把链表倒序,这样单链表就变成了逆单链表,找倒数K个结点只要K此就行了。
不过空间复杂度变成了O(n)
⑼ 如何链表反转
链表反转
单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的:
1->2->3->4->5
通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
struct
linka
{
int
data;
linka*
next;
};
void
reverse(linka*&
head)
{
if(head
==NULL)
return;
linka*pre,
*cur,
*ne;
pre=head;
cur=head->next;
while(cur)
{
ne
=
cur->next;
cur->next
=
pre;
pre
=
cur;
cur
=
ne;
}
head->next
=
NULL;
head
=
pre;
}
还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下:
linka*
reverse(linka*
p,linka*&
head)
{
if(p
==
NULL
||
p->next
==
NULL)
{
head=p;
return
p;
}
else
{
linka*
tmp
=
reverse(p->next,head);
tmp->next
=
p;
return
p;
}
}
⑽ 大公司笔试面试有哪些经典算法题目
我的面试遇到的题目,都是直接写代码,二分查找+旋转数组查找,网络和阿里面试都有问过,链表操作:逆置链表,逆置后面K个节点,链表快排,这三道题网络遇到过,另外网易遇到过链表归并。