鍊錶常見問題 2

2021-09-25 23:58:39 字數 841 閱讀 9201

這個問題大家在資料結構中是很常見的,這個問題說簡單也簡單,可是想不通的時候還是有點難度的,領扣對這道題的描述有以下幾種情況

領扣給的鍊錶節點定義方式:

/**

* definition for singly-linked list.

* class listnode

* }*/

方法**

public boolean hascycle(listnode head) 

//此時仍未遇到則不帶環

return false;

}

在上乙個題目我們可以成功的判斷鍊錶是否帶環,我們現在想知道這個環的具體位置,我們要求得鍊錶入環的第乙個節點

題目描述:給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。

說明:不允許修改給定的鍊錶。

這個題目的情況有以下幾種:

public listnode detectcycle(listnode head) 

}//鍊錶帶環

if(met!=null)

return fast;

}//鍊錶不帶環

else

return null;

}

鍊錶常見問題

思路 快慢指標,慢指標每次移動一步,快指標每次移動兩步,如果存在環,那麼兩個指標一定會在環內相遇 把第二個煉表頭節點的頭接到第乙個鍊錶尾部,然後就轉換成判斷單鏈表是否有環的問題了 當快慢指標相遇後,將乙個指標固定在相遇點,另乙個指標回到鍊錶起始位置,然後兩指標每次都移動乙個node,當兩指標再次相遇...

鍊錶常見問題(上)

void slistprinttailtohead slistnode phead printf d cur data tail cur 遞迴實現 void slistprinttailtoheadr slistnode phead void slistdelnontailnode slistnod...

鍊錶常見問題 有序合併

兩個有序鍊錶,合併後仍然有序。分析 容易想到的就是找頭,也就是判斷下兩個煉表頭結點val小的。然後採用尾部插入 從head插就覆蓋了 遍歷兩個鍊錶,每次取小的,知道有個鍊錶為空退出。在判斷有無剩餘非空的鍊錶,追加到尾部。author bohu83 public class mergerlist li...