這裡暫時沒有考慮pos位於尾部的情況
# 節點的定義:
class node:
'''節點的定義'''
def __init__(self,val):
self.val = val
self.next = none
# 單鏈表的定義:
class singlelinklist:
# 這裡呼叫節點的定義,建立乙個空鍊錶,self.__head表示始終指向鍊錶的頭
def __init__(self,node=none):
self.__head = node #
# 給空鍊錶裡面插入資料:
#這裡val指使用者給的乙個數
#頭插def headadd(self,val):
# 這裡指:將數字val變成節點,然後插入空煉表中
node = node(val)
# 所以我們要把這個節點的next指向上述空鍊錶的中
node.next = self.__head
self.__head = node
#尾插def tailadd(self,val):
# val 變節點
node = node(val)
cur = self.__head
if cur == none:
self.headadd(node)
else:
while cur.next:
cur= cur.next
cur.next = node
#中間插
def middleadd(self,val,pos):
node = node(val)
if pos<=0:
self.headadd(node)
else:
#找到待插位置前乙個節點
cur = self.__head
for i in range(pos-1):
cur = cur.next
node.next = cur.next
cur.next = node
# 列印鍊錶
def walkthrough(self):
cur = self.__head
while cur:
print(cur.val)
cur = cur.next
# 建立鍊錶例項
link = singlelinklist()
link.headadd(1)
link.headadd(2)
link.headadd(3)
link.headadd(4)
link.headadd(5)
link.tailadd(1)
link.tailadd(2)
link.tailadd(3)
link.tailadd(4)
link.tailadd(5)
link.middleadd(10,2)
link.walkthrough()
單鏈表求中間節點
難度 兩星 單鏈表求中間節點分為兩種情況 1 單鏈表長度為奇數時,如abcde,那麼中間節點就是c。2 單鏈表長度為偶數時,如abcdef,那麼中間節點有兩個c和d。本文簡單起見就取第二個中間節點。思想 其實思想很簡單,其實就是跟 判斷單鏈表儲存的字串是否為 回文串 中求中間節點的方法一模一樣,使用...
尋找單鏈表的中間節點
思路 1 首先求解單鏈表的長度length,然後遍歷 length 2 的距離即可查到單鏈表的中間節點,但一般此種方法需要遍歷兩次鍊錶,第一次遍歷求解單鏈表的長度,第二次遍歷根據索引獲取中間節點。2 如果是雙向鍊錶,可以首尾並行,利用兩個指標乙個從頭到尾,乙個從尾到頭,當兩個指標相遇的時候,就找到中...
如何找到單鏈表的中間節點
力扣p148 思路 借用兩個快慢不同的指標,開始的時候讓兩個指標都指向鍊錶第乙個結點的位置,然後,讓快指標一次走兩步,讓慢指標一次走一步。鍊錶結點個數為奇數個時 當快指標走到null前面乙個結點的時候,慢指標此時剛好指向鍊錶中間結點。鍊錶結點個數為偶數個時 當快指標走到null的時候,慢指標此時剛好...