1. 程式人生 > >筆試題:判斷一個單鏈表是否有環,如果有,找出環的起始位置

筆試題:判斷一個單鏈表是否有環,如果有,找出環的起始位置

</pre><pre name="code" class="cpp">Node * FindLoop(Node *phead)
{
     Node *p = phead,q = phead,h = phead;
     while(p && q->next)
    {
         p = p->next;//慢指標走一步
         q = q->next->next;//快指標走兩步
         if(p == q)brak;
    }
    if(q == NULL || q->next == NULL)
       return NULL;
    while(h != q)
    {
        h = h->next;
        q = q->next;
    }
    return h;
}




相關推薦

試題判斷一個單鏈是否如果起始位置

</pre><pre name="code" class="cpp">Node * FindLoop(Node *phead) { Node *p = phead,q = phead,h = phead; while(p && q->next)

java試題判斷一個3~100之間的所有的素數?

java筆試題 int 打印 () als 註意 分享圖片 技術 sqrt 註意兩點:① 什麽是素數?② 如何利用計算機的方法去解決問題? public static void NumberDemo(){ int x = 0; System

如何判斷一個單鏈是否

算法 查找 public class LinkedListRing{ static class LinkedNode<T>{ private T t ; private LinkedNode<T> next = null; public LinkedNode(T t)

Java試題給定一個ReadOnlyClass的對象roc能否把這個對象的age值改成30?

acc 資料 謝謝 ble 技術 set exce turn 宋體 在Java筆試面試中,經常會遇到代碼題,今天我們就來看一則Java代碼筆試題。 有如下代碼: Class ReadOnlyClass { private Intege

試題判斷一個物件是不是陣列型別

<script> //判斷一個物件是不是陣列型別 typeof不能檢視所有型別 var obj1={x:1,y:2}, obj2=[1,2,3], obj3=new Date(); //1.判斷爹(原型物件)

判斷一個單鏈是否帶並求的長度的入口點

單鏈表是否帶環? 用快慢指標分別遍歷這個單鏈表,如果快慢指標能相遇,就代表有環的存在。 環的長度? 當快慢指標相遇時,記錄當前位置,然後走一圈的長度就是環的長度。 環的入口點? 設快指標F走兩個結點,慢指標S走一個結點。 F=2*S;     &nb

關於連結串列的面試問題(判斷一個單鏈中是否

判斷一個單鏈表中是否有環  首先連結串列結點宣告如下: struct ListNode { int key; ListNode * next; }; 思路:如果一個單鏈表中有環,用一個指標去遍歷,永遠不會結束,所以可以用兩個指標,一個指標一次走一步,另

演算法之(二)判斷一個單鏈是否

思路:如果一個單鏈表中有環,用一個指標去遍歷,永遠不會結束,所以可以用兩個指標,一個指標一次走一步,另一個指標一次走兩步,如果存在環,則這兩個指標會在環內相遇,時間複雜度為O(n)。 拓展問題1:如果單鏈表有環,找出環的入口節點(環的連線點)。 這裡先證明一個

演算法題010 -- [判斷一個單鏈是否是迴文連結串列] by java

題目 判斷一個單鏈表是否是迴文連結串列。 如:[1, 2, 3, 2, 1] 就是一個迴文連結串列,正著依次看連結串列中元素和反著依次看連結串列中元素都是一樣的。 要求: 時間複雜度 O(n) 空間複雜度 O(1) 程式碼 package algorithm01

試題一個字串中查詢子字串的個數

題目:在一個字串中查詢子字串的個數。 要求:兩個字串之間以空格隔開,前一個為字串,後一個為要查詢的子字串。結果輸出字串中包含的子字串的個數。 例如:輸入:abcdssdfabc abc

網易試題輸入一個正整數若該數能用幾個連續正整數之和表示則輸出所有可能的正整數序列。

解題思路:           **找到數學規律。n以i為開頭的j個整數的和為i*j+j*(j-1)/2;判斷輸入的整數是否和計算結果相同。           如果相同則迴圈輸出以i為開頭的j個整數。           這個題目給我最大的啟示就是要學會用數學的方法來解決問題,在此之前我一直希望通過一種遞

如何判斷一個單鏈是否以及入口

這是一個在我們學習資料結構的時候經常會遇到的問題,今天給大家帶來這個問題的幾種解法。 方法一 最容易想到的辦法就是遍歷單鏈表,如果單鏈表有環的話那麼會進入死迴圈,但是我們不知道單鏈表的長度,所以如果單鏈表長度很長,我們一直向下遍歷,也無法分辨出是單鏈表還

判斷一個單鏈是否

主函式中沒有出現具體的連結串列,主要看判斷有無環函式ExitLoop. 外函式的while迴圈條件的判定:如果fast指標指向NULL,if條件語句不成立,返回flag=0:不存在環。 如果flag走到最後一個結點時,要是不給定一個條件,while繼續執行,flag一次迴圈

判斷一個單鏈是否是迴文連結串列

思路有三種: 1.用棧順著連結串列儲存所有元素,然後依次出棧從頭再比較。時間複雜度O(N),空間複雜讀O(N)。 2.還是棧,不過只儲存前一半元素,然後和後一半對比即可。時間複雜度O(N),空間複雜

華為機試題判斷一個數字中是否包含兩個相同的子串

描述: 判斷給定的一個數字,把它當成字串以後,該字串中是否包含相同的兩個子串,子串的長度要求大於等於2。 比如:12123,該數字包含兩個“12”子串; 又比如:1223122,該數字包含兩個“

試題如何判斷單鏈是否存在

1.如何判斷是否有環?如果有兩個頭結點指標,一個走的快,一個走的慢,那麼若干步以後,快的指標總會超過慢的指標一圈。 2.如何計算環的長度?第一次相遇(超一圈)時開始計數,第二次相遇時停止計數。 3.如何判斷環的入口點:碰撞點p到連線點的距離=頭指標到連線點的距離,

java試題隨機生成一個4位數字的年號判斷是否是閏年?

技術 ring ima color 一個 sta string == pub 老規矩,直接上代碼: /** * 隨機生成一個4位數的年號,判斷概念是否為閏年並輸出相應的信息。 */ public static void LeapYear

試題19——怎樣把一個單鏈反序

(1)反轉一個連結串列。迴圈演算法: List reverse(List n) { if(!n) //判斷連結串列是否為空,為空退出 { return n; } list cur=n.next; //儲存頭結點的下個節點 list pre=n; /

No.23 經典試題用巨集來計算偏移量判斷大小端(聯合體法指標法)

寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s