[英]About linked lists in python
我需要創建一個函數,以從該函數內部手動給出的值中從鏈表中刪除節點,但我不知道如何做到這一點。 我的算法是這樣的:
noRaiz = None
def novoNo(valor):
return {
"valor": valor,
"proximo": None
}
def remove(valor):
global noRaiz
if noRaiz is None:
return
noAtual = noRaiz
if noRaiz["valor"] == valor:
noRaiz = noRaiz["proximo"]
def imprimir():
noAtual = noRaiz
while noAtual is not None:
print(noAtual["valor"])
noAtual = noAtual["proximo"]
noRaiz = novoNo(54)
no2 = novoNo(26)
no3 = novoNo(93)
no4 = novoNo(17)
no5 = novoNo(77)
no6 = novoNo(31)
noRaiz["proximo"] = no2
no2["proximo"] = no3
no3["proximo"] = no4
no4["proximo"] = no5
no5["proximo"] = no6
no6["proximo"] = None
imprimir()
noRaiz 是列表中的第一個節點, noAtual 是運行代碼時打印時列表中的當前節點, imprimir() 是打印節點的函數。 如果我想刪除節點 54 或 17,函數會是什么樣子?
訣竅是遍歷鏈表並在前面查找一個節點以查找與該值匹配的節點。 當匹配時,您應該更改當前節點的鏈接,以便它跳過具有該值的下一個節點。
這是函數:
def remove(valor):
global noRaiz
if noRaiz is None: # Nothing to do
return
noAtual = noRaiz
if noRaiz["valor"] == valor: # Special case
noRaiz = noRaiz["proximo"]
return
while noAtual["proximo"] is not None:
if noAtual["proximo"]["valor"] == valor:
noAtual["proximo"] = noAtual["proximo"]["proximo"]
break
noAtual = noAtual["proximo"]
備注:考慮使用 Node class
而不是全局字典來實現您的鏈表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.