python - Python链表-递归删除函数中的Nonetype错误
问题描述
我正在自学 Python 并通过构建单链表类来工作。类构造函数、add 和 display 函数都可以工作,但是当尝试实现递归删除函数时,我发现列表根本没有改变,或者它完全删除了自己。将打印语句添加到旨在打印节点值的递归函数会生成 Nonetype 属性错误,这表明我可能对传入的参数有问题,因为我认为是节点的对象显然是不是。我已经查看了我在 SE 上找到的其他 Nonetype 问题,但要么它们没有提供所需的信息,要么我只是误解了它们。类定义:
class Node:
def __init__(self, value):
self.data = value
self.next_node = None
class List:
def __init__(self):
self.head = None
删除功能:
def remove(self, target):
if(self.head == None):
print("List is empty!")
return None
else:
print(str(self.head.data))
self.head = self.remove_target(self.head, target)
return self.head
def remove_target(self, head, target):
print("Target: " + str(target) + "Head: " + str(head.data)) #Nonetype errors occur here
if(head == None):
return head
if(head.data == target):
print("target found")
head = head.next_node
return head
else:
head.next_node = self.remove_target(head.next_node, target)
return head
我以前的编程经验是在 c++ 中,我认为问题的一部分是用于隐藏 c++ 中数据成员的包装函数在 Python 中并不是真正的东西?但是,当我直接从测试程序调用递归函数时,会出现相同的结果。任何可以散发的光都将不胜感激!
解决方案
推荐阅读
- jquery - 如何检查在一个下拉列表中选择的选项是否在另一个下拉列表中选择
- android - AutoCompleteTextView 与带有文本过滤器的凌空
- android - 如何使用 webview 在线性布局或相对布局上设置按钮
- email - SMTP 客户端的主机名与 PTR 不匹配
- python - Python:是否可以比较函数导入来源?
- python-2.7 - 如何将 multiprocessing.pool 定义为类成员?
- encryption - 加密在 .NET Core 2.1 下在 linux 下生成的消息添加前导字节
- excel - 真的需要关于 selection_change 事件的 excel VBA 帮助
- c - 如何打印带有 void 函数的指针?
- python - 如何模拟助手类的初始化