鍊錶記錄了頭節點與尾節點,是為了方便末尾新增時,不在遍歷鍊錶而設定的。反轉的思想是設定乙個前驅節點為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...