程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> “chaos”的算法--之鏈表面試題

“chaos”的算法--之鏈表面試題

編輯:關於C語言

聲明:版權所有,歡迎轉載。 聯系信箱:[email protected]

  前兩天倩仔仔給我了一套試題讓我看,整體來說感覺題都還算不錯,從中隨便找了兩道。先看題吧!

1、怎樣判斷一個單鏈表中是都存在環路?(搜狗面試題)

兩種方法:

方法一:使用p、q兩個指針,p總是向前走,但q每次都從頭開始走,對於每個節點,看p走的步數是否和q一樣。如圖,當p從6走到3時,用了6步,此時若q從head出發,則只需兩步就到3,因而步數不等,出現矛盾,存在環。

方法二:使用p、q兩個指針,p每次向前走一步,q每次向前走兩步,若在某個時候p == q,則存在環。

2、怎樣快速找到未知長度單鏈表的中間節點?(騰訊面試題)

方法一、先對其進行遍歷,求出長度n,則中間元素就可求出。

方法二、運用快慢指針方法,一個指針每走一步另一個指針走兩步,當後者走到頭時,前者所指結點即為中間元素。

   當然了,方法一應該是大多數人都能想到的,但是這樣的公司我相信他要的肯定不是方法一了。

   綜上所述,快慢指針還是很有用的。


本文出自 “驿落黃昏” 博客,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/1266231

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved