連結串列面試題(九)---判斷一個連結串列是否帶環
一、結構體定義
typedef int DataType;
typedef struct ListNode//定義結點
{
DataType data;
struct ListNode* next;
}ListNode,*PListNode;
typedef struct PList//定義一個成員是指向結點的指標的結構體
{
PListNode PHead;
}PList,*PList;
二、函式實現
思路:判斷一個連結串列是否帶環的方法是:取兩個指標a和b,一開始兩個指標都指向連結串列的第一個結點;
然後讓a指標以每次走一步的走法向前走,b指標以每次走兩步的走法向前走,兩個正指標同時開始走,如果連結串列帶環,那麼快慢指標終究會在環內一點相交;返回快慢指標的交點即可;
//9.判斷一個連結串列是否帶環,返回前後指標相遇的交點---前後指標法;
PListNode CheakCycle(PListNode PHead)
{
PListNode fast=NULL;//每次走兩步
PListNode slow=NULL;//每次走一步
fast=PHead;
slow=PHead;
while (fast&&fast->next)//判斷fast->next不為NULL,是為了防止下面fast->next->next對NULL指標訪問,發生錯誤
{
fast=fast->next->next;
slow=slow->next;
//帶環
if (fast==slow)
{
return fast;
}
}
//不帶環
return NULL;
}
相關文章
- 連結串列面試題(十二)---判斷兩個都不帶環的連結串列是否相交面試題
- 判斷單連結串列是否存在環,判斷兩個連結串列是否相交問題詳解
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- 連結串列專題——面試中常見的連結串列問題面試
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 連結串列面試題(八)---約瑟夫環面試題
- 連結串列面試題(一)---刪除一個無頭單連結串列的非尾結點面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列面試題(六)---刪除單連結串列倒數第k個結點面試題
- (連結串列)連結串列的排序問題排序
- 一個node連結串列翻轉的面試題面試題
- [2014校招筆試]判斷單連結串列是否有環?筆試
- 漫畫演算法:如何判斷連結串列有環?演算法
- 連結串列面試題(四)---查詢連結串列的中間節點面試題
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 連結串列-雙向連結串列
- 連結串列-迴圈連結串列
- 連結串列面試題(五)---尋找連結串列的倒數第k個結點O(N)面試題
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 帶頭結點的連結串列操作題
- 連結串列4: 迴圈連結串列
- 連結串列-單連結串列實現
- 如何判斷一個連結地址是否有效
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- 環形連結串列II
- 演算法面試(一) 連結串列演算法面試
- 牛客網高頻演算法題系列-BM6-判斷連結串列中是否有環演算法
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 連結串列入門與插入連結串列
- 搞懂單連結串列常見面試題面試題
- 牛客網高頻演算法題系列-BM13-判斷一個連結串列是否為迴文結構演算法
- 連結串列