任務二 鍊錶學習 環形鍊錶 反轉單鏈表

2021-09-03 09:04:37 字數 1808 閱讀 3026

鍊錶(linked list)是由一組被稱為結點的資料元素組成的資料結構,每個結點都包含結點本身的資訊和指向下乙個結點的位址。由於每個結點都包含了可以鏈結起來的位址資訊,所以用乙個變數就能夠訪問整個結點序列。也就是說,結點包含兩部分資訊:一部分用於儲存資料元素的值,稱為資訊域;另一部分用於儲存下乙個資料元素位址的指標,稱為指標域。鍊錶中的第乙個結點的位址儲存在乙個單獨的結點中,稱為頭結點或首結點。鍊錶中的最後乙個結點沒有後繼元素,其指標域為空。

單鏈表的結構見

題目:給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null。

為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鍊錶中沒有環。

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

示例:輸入:head = [3,2,0,-4], pos = 1

輸出:tail connects to node index 1

解釋:鍊錶中有乙個環,其尾部連線到第二個節點。

**:

class

solution

(object)

: def detectcycle

(self, head)

:"""

:type head: listnode

:rtype: listnode

"""a =

while head:

if head in a:

return head

else

: a[head]=0

head = head.next

return none

**:

class

solution

(object)

: def detectcycle

(self, head)

:"""

:type head: listnode

:rtype: listnode

"""if not head:

return none

fast = slow = head

while fast.next and fast.next.next:

fast = fast.next.next

slow = slow.next

if slow == fast:

m = head

while slow != m:

m = m.next

slow = slow.next

return m

return none

示例:

輸入: 1->2->3->4->5->null

輸出: 5->4->3->2->1->null

思路:迴圈反轉

**:

class

solution

(object)

: def reverselist

(self, head)

:"""

:type head: listnode

:rtype: listnode

"""if not head:

return none

q = head

cur = none

pre = none

while q:

cur = q.next

q.next = pre

pre = q

q = cur

return pre

鍊錶 環形鍊錶

環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...

鍊錶 環形鍊錶

題目描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。說明 不允...

環形鍊錶 鍊錶

題目 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數pos來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果pos是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸入...