亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

需要幫助為我的鏈表類實現 remove() 方法

需要幫助為我的鏈表類實現 remove() 方法

翻過高山走不出你 2023-06-20 10:27:10
我目前正在學習 Python 中的數據結構,我正在嘗試創建一個鏈表。我得到了appendandget_size和display方法,但是當我嘗試創建一個remove方法時。它刪除了特定元素,但是當我嘗試再次使用該方法打印所有元素時display,它打印的是一個空列表。class Node:    def __init__(self, data=None):        self.data = data        self.ref = None        class Linked:    def __init__(self):        self.head = Node()         self.size = 0     def append(self, data):         new = Node(data)           cur = self.head         while cur.ref != None:            cur = cur.ref        cur.ref = new        self.size += 1        def get_size(self):        return self.size    def display(self):         el = []        cur_node = self.head        while cur_node.ref !=None:             cur_node = cur_node.ref            el.append(cur_node.data)        return el        def remove(self, data):        this_node = self.head        prv_node = None        while this_node != None:            if data == this_node.data:                if prv_node:                    prv_node.ref = this_node.ref                else:                    self.head = this_node.ref                                    self.size -= 1                return F"The item is removed "            else:                prev_node = this_node                this_node = this_node.ref        return F"data not found"
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

始終引用節點的目的head是避免像remove. prev并且cur可以初始化為頭部,設置為循環頂部的cur節點。在循環底部更新。prevprev


def remove(self, data):

    previous = self.head

    while prev.ref is not None:

        cur = prev.ref

        if cur.data == data:

            prev.ref = cur.ref  # Cut out cur

            self.size -= 1

            return "The item is removed"

        prev = cur

    return "data not found"

在 Python 3.8 中,您可以使用運算符將賦值移動cur到循環條件中:=:


while (cur := prev.ref) is not None:

    if cur.data == data:

    ...

另外,我鼓勵您不要返回特殊字符串來指示成功或失敗。其他一些選項:

  1. True如果項目被移除則返回,False否則

  2. 返回被刪除的節點,None否則

  3. 總是返回None

  4. 始終返回None,但如果未找到要刪除的項目,則引發異常。


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號