python實現鍊錶與反轉

2021-10-19 03:02:59 字數 1652 閱讀 6513

鍊錶記錄了頭節點與尾節點,是為了方便末尾新增時,不在遍歷鍊錶而設定的。反轉的思想是設定乙個前驅節點為none,首節點指向none,下乙個節點指向前乙個節點即可。

class

node

(object):

def__init__

(self, data=

none

,next

=none):

self.data = data

self.

next

=next

def__str__

(self)

:return f''

class

linkedlist

(object):

def__init__

(self)

: self.head =

none

self.last =

none

defis_empty

(self):if

not self.head:

return

true

def(self, data)

:if self.is_empty():

self.head = node(data)

self.last = self.head

else

: self.last.

next

= node(data)

self.last = self.last.

next

# cur = self.head

# while cur.next:

# cur = cur.next

# cur.next = node(data)

defiter_node

(self)

: cur = self.head

while cur:

print

(cur)

cur = cur.

next

deflast_node

(self)

:return self.last

defreverse

(self)

:# 前驅節點

pre =

none

# 當前節點

cur = self.head

# 頭尾節點交換

self.head, self.last = self.last, self.head

while cur:

# 記錄後驅節點

tmp = cur.

next

# 後驅節點指向前驅節點

cur.

next

= pre

# 當前節點成為前驅節點

pre = cur

cur = tmp

# a -> b -> c -> d

l = linkedlist(

)'a'

)'b'

)'c'

)'d'

)l.iter_node(

)l.reverse(

)l.iter_node(

)# d -> c -> b -> a

Python實現反轉鍊錶

將鍊錶進行反轉 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 其實 的實現原理很簡單,只需要按照下面幾個步驟即可實現鍊錶的反 儲存上乙個節點的節點資訊 繼續處理後面的節點 class listnode def init self,val,next none ifisinst...

leetcode 反轉鍊錶 python實現

題目 給定乙個單鏈表和煉表首節點,要求反轉鍊錶 解題思路 反轉相鄰的兩個節點 definition for singly linked list.class listnode def init self,x self.val x self.next none class solution def r...

反轉鍊錶與分組反轉鍊錶

經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...