假設給定鍊錶 1->2->3->4->5->6->7 中指向第5個元素的指標,要求把結點5刪掉,刪除後鍊錶變為1->2->3->4->6->7
1.如果這個結點是鍊錶的最後乙個結點,那麼無法刪除這個結點。
2.如果這個結點不是鍊錶的最後乙個結點,可以通過把其後繼結點的資料複製到當前結點中,然後刪除後繼結點的方法來實現。
# -*-coding:utf-8-*-
"""@author : 圖南
@software: pycharm
@time : 2019/9/7 19:46
"""class node:
def __init__(self, data=none, next=none):
self.data = data
self.next = next
def printlink(head):
if head is none or head.next is none:
return
cur = head.next
while cur != none:
print(cur.data, end=" ")
cur = cur.next
print()
def conlink(nums, n):
nums = list(map(int, nums.split(' ')))
n = int(n)
if len(nums) == 0 or n == 0:
return
p = none
head = node()
cur = head
for i in range(1, len(nums)+1):
node = node(nums[i-1])
cur.next = node
cur = node
if i == n:
p = cur
return head, p
def deletep(p):
if p.next is none:
return false
p.data = p.next.data
p.next = p.next.next
return true
if __name__ == '__main__':
nums = input('鍊錶:')
n = input('節點數:')
head, p = conlink(nums, n)
print('刪除前:')
printlink(head)
f = deletep(p)
if f:
print('刪除後:')
printlink(head)
else:
print('無法刪除!')
首先分配乙個新結點q,把結點q插入到結點p後,然後把p的資料域複製到結點q的資料域中,最後把結點p的資料域設定為待插入的值。
# 給定節點p在p前插入乙個節點
1325 刪除給定值的葉子節點
給你一棵以 root 為根的二叉樹和乙個整數 target 請你刪除所有值為 target 的 葉子節點 注意,一旦刪除值為 target 的葉子節點,它的父節點就可能變成葉子節點 如果新葉子節點的值恰好也是 target 那麼這個節點也應該被刪除。也就是說,你需要重複此過程直到不能繼續刪除。def...
刪除單鏈表的給定節點(非末尾)
此刪除法,只給了需要刪除的那個節點!請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。示例 1 輸入 head 4,5,1,9 node 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.示例 ...
18 刪除鍊錶中的給定節點
package sort public class test13 public static listnode deletenode listnode head,listnode tobedeleted 如果刪除的是頭結點,直接返回頭結點的下乙個結點 if head tobedeleted 下面的情...