單鏈表 增加中間插入節點的功能

2021-10-04 14:11:47 字數 1527 閱讀 6064

這裡暫時沒有考慮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的時候,慢指標此時剛好...