鏈表面試題
⑴ 《微軟面試題》判斷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個節點,鏈錶快排,這三道題網路遇到過,另外網易遇到過鏈表歸並。