本篇文章為大家展示了面試題快慢鏈表和快慢指針怎樣答,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司主營(yíng)代縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),代縣h5成都微信小程序搭建,代縣網(wǎng)站營(yíng)銷推廣歡迎代縣等地區(qū)企業(yè)咨詢
如何快速找到位置長(zhǎng)度單鏈表的中間節(jié)點(diǎn)?普通方法,就是先遍歷,在從頭找到2/length的中間節(jié)點(diǎn)。算法復(fù)雜度是:O(3*n/2)。而更快的方法就是利用快慢指針的原理。
快慢鏈表:利用標(biāo)尺的思想,設(shè)置兩個(gè)指針(一快一慢)*serach和*mid,剛開始都指向單鏈表的頭結(jié)點(diǎn)。但是*search指針的移動(dòng)速度是*mid的兩倍。當(dāng)*search到尾結(jié)點(diǎn)的時(shí)候,mid剛好到了中間。算法復(fù)雜度是:O(n/2)
int GetMidNode(LinkList *L,int elem){ LinkList *search,*mid; mid = search = L; //指向頭結(jié)點(diǎn) while (search->next != NULL){ //當(dāng)存在下個(gè)結(jié)點(diǎn)的時(shí)候 if (search->next->next!=NULL) {//檢查下個(gè)的下個(gè)節(jié)點(diǎn)是否為空 search = search->next->next; mid = mid->next; } else search = search->next; } elem = mid->data; return elem; }
上述內(nèi)容就是面試題快慢鏈表和快慢指針怎樣答,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。