第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

python單鏈表不能正常工作

python單鏈表不能正常工作

Go
函數(shù)式編程 2022-12-26 09:59:05
添加方法()只打印兩個值,我想打印我添加的所有數(shù)字。size 確實很好用,但我不知道為什么當(dāng)我想打印所有值時 value 不起作用enter code hereclass Node():    def __init__(self,value):        self.next =None        self.val =valueclass single_linked_list():    def __init__(self):        self.head =None        self.size =0    def add(self,val):        node =Node(val)        if self.head is None:            self.head =node            self.size +=1        else:            self.head.next =node            self.size +=1    def __str__(self):        vals =[]        node =self.head        while node is not None:            vals.append(node.val)            node =node.next        return f"[{','.join(str(val)for val in vals)}]"sl=single_linked_list()sl.add(3)sl.add(5)sl.add(50)sl.add(9)print(sl)print(sl.size)# it just show these value :[3,9]#4 as size fine 
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

問題

問題是您在該add()方法中只涵蓋了 2 個案例:

  1. 列表中有零個節(jié)點。

  2. 列表中只有一個節(jié)點

如果列表中有超過 1 個節(jié)點怎么辦?

假設(shè)列表中有兩個節(jié)點:1 -> 2

現(xiàn)在,要添加3到列表中,該方法add()將檢查. 事實并非如此,因為有 2 個元素。headNone

然后,它將簡單地添加3nextof head。這實際上是2之前設(shè)置的。因此,2丟失了,新列表是1 -> 3

解決方案

要解決此問題,您必須編輯add()函數(shù)并檢查列表中是否有超過 1 個節(jié)點??梢赃@樣做:

def add(self,val):

  node = Node(val)

  if self.head is None:

    self.head = node

    self.size += 1

  else:

    curr_node = self.head


    # Go to the last element of the list

    while curr_node.next:

      curr_node = curr_node.next


    # Add new element after the last element

    curr_node.next = node

    self.size += 1


查看完整回答
反對 回復(fù) 2022-12-26
?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

class Node():

    def __init__(self,value):


        self.next =None

        self.val =value

class single_linked_list():

    def __init__(self):

        self.head =None

        self.size =0



    def add(self,val):

        node =Node(val)

        if self.head is None:

            self.head =node

            self.size +=1

        else:

            self.head.next =node

            self.size +=1


查看完整回答
反對 回復(fù) 2022-12-26
?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

那是因為您的 add 方法并沒有真正將節(jié)點添加到列表中,它只是替換了head.next值。所以你在列表中最多有 2 個節(jié)點,新值只是替換第二個位置。


這是 add 方法的固定代碼:


def add(self,val):

  node =Node(val)

  if self.head is None:

    self.head =node

    self.size +=1

  else:

    currentNode = self.head

    while currentNode.next:

      currentNode = currentNode.next

    currentNode.next = node

    self.size += 1

這是一個 Repl.it 鏈接,如果您想查看輸出 - https://repl.it/repls/RewardingVengefulTask


查看完整回答
反對 回復(fù) 2022-12-26
  • 3 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號