我目前正在自學一些編程,我偶然發現了一個問題,該問題要求您制作一個包含某個數字(從尾到尾)的鏈表。這是我寫的代碼,我不知道為什么它不起作用。我已經創建了簡單的節點類和一個 Number 類來保存我的串列。
class Node:
def __init__(self, x=None):
self.val = x
self.next = None
def __str__(self):
return str(self.val)
class Number:
def __init__(self):
self.first = None
def set(self, num):
for i in range(len(str(num))):
tail = Node(num % 10)
if i == 0:
head = tail
num //= 10
tail = tail.next
self.first = head
Set 函式用于創建具有給定數字的串列,因此
n = Number()
n.set(123)
應該創建一個串列 3 -> 2 -> 1,但是當我嘗試使用
def node_printer(head: Node):
while head is not None:
if head.next is not None:
print(str(head) ", ", end="")
else:
print(head)
head = head.next
并呼叫 node_printer(n.first) 我得到 3 作為輸出。
uj5u.com熱心網友回復:
您可以通過添加到頭部而不是尾部來解決這個問題。以這種方式獲取數字的位數也容易得多:
def numberList(number):
head = none # initial head
while number:
number,digit = divmod(number,10) # extract last digit
newHead = Node(digit) # make it a node
newHead.next, head = head, newHead # link it as newHead
return head or Node(0) # first digit or single zero
您可以通過向 Node 類添加 nextNode 可選引數來縮短此時間:
class Node:
def __init__(self, x=None, nextNode=None):
self.val = x
self.next = nextNode
def numberList(number):
head = None # initial head
while number:
number,digit = divmod(number,10) # extract last digit
head = Node(digit,head) # make it a node, link old head
return head or Node(0) # first digit or single zero
uj5u.com熱心網友回復:
在tail = tail.next因為tail剛剛創建的,tail.next是None這樣沒有獲取鏈接。
def set(self, num):
head = tail = None
while num:
# Create new node
temp = Node(num % 10)
# Empty list?
if head == None:
head = tail = temp
# Not empty list, append to tail
else:
tail.next = temp
# Update tail for next time
tail = temp
num //= 10
self.first = head
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/391711.html
上一篇:無法從父類呼叫子類方法
下一篇:回圈遍歷Python類中的函式
