Python链表在打印时接收内存地址的问题,除非重复调用



我正在创建一个链表实现,我无法修复必须双重调用node.val.val来打印数据而不是内存地址的错误。

这是我的实现:

class LinkedNode:
def __init__(self, val, nxt=None):
self.val = val
self.nxt = nxt
class LinkedList:
def __init__(self, head=None):
self.head = head
def append(self, new_val):
node = LinkedNode(new_val, None)
if self.head:
curr = self.head
while curr.nxt:
curr = curr.nxt
curr.nxt = node
else:
self.head = node
def print(self):
curr = self.head
while curr:
**print(curr.val)**
curr = curr.nxt

l1 = LinkedList()
l1.append(LinkedNode(2))
l1.append(LinkedNode(3))
l1.append(LinkedNode(4))
l1.print()

在print函数中是"print(curr.val)",函数打印内存地址。当为print(current . value .val)",函数打印2,3,4。

谁有可能的解决方案?

您将LinkedNode()对象作为参数传递给.append()函数:

class LinkedNode:
def __init__(self, value, nxt=None):
self.val = value
self.nxt = nxt
class LinkedList:
def __init__(self, head=None):
self.head = head
def append(self, new_val):
node = LinkedNode(new_val, None) #Creation of LinkedNode from integer
if self.head:
curr = self.head
while curr.nxt:
curr = curr.nxt
curr.nxt = node
else:
self.head = node
def print(self):
curr = self.head
while curr:
print(curr.val)
curr = curr.nxt

l1 = LinkedList()
l1.append(2) #Argument must be integer, not LinkedNode(integer)
l1.append(3) #Because you are already converting integer to LinkedNode on append function
l1.append(4)
l1.print()

输出:

2
3
4

因为在这些行中您创建的是LinkedNode对象而不是值!

l1.append(LinkedNode(2))
l1.append(LinkedNode(3))
l1.append(LinkedNode(4))

之后,在append函数的作用域中创建了一个新的LinkedNode(LinkedNode(2), None)

改为:

l1.append(2)
l1.append(3)
l1.append(4)

最新更新