<p>不知道你是否需要一般性的反馈,但这里有一些想法和我的实现。</p>
<p>我认为,如果用户不需要使用Node类,那么它更容易使用。所以构造函数/add/delete可以直接接受这个值。无论如何,我认为让Node类嵌套在LinkedList中以提供上下文更好。</p>
<p>你说你想避免创建一个新的LinkedList实例,所以我写了它而不需要它。</p>
<p>delete函数只删除值的第一个匹配项(注意,可以有多个具有相同值的节点)</p>
<p>delete函数返回消息有点不寻常。如果你想要一条错误消息,或者如果这是唯一期望的错误,那么最好把它放在一个异常中,可能只返回True或False。</p>
<p>我还没有写一个迭代器,显然这是需要的。</p>
<pre><code>class LinkedList :
class Node:
def __init__(self, value) :
self.__value = value
self.next = None
def getValue(self) :
return self.__value
def __init__(self, value) :
self.__node = self.Node(value)
def __str__(self) :
if self.__node is None :
return '[empty]'
node = self.__node
s = "[Node " + str(node.getValue())
if node.next is None:
return s + "]"
while node.next is not None:
s += ", Node " + str(node.next.getValue())
node = node.next
return s + "]"
def add(self, value):
if self.__node is None :
self.__node = self.Node(value)
return
node = self.__node
while node.next is not None :
node = node.next
node.next = self.Node(value)
def delete(self, value) :
if self.__node is None :
return False # or maybe raise
node = self.__node
if node.getValue() == value :
if node.next is not None :
self.__node = node.next
else :
self.__node = None
return True
while node.next is not None :
if node.next.getValue() == value :
newNext = node.next.next
if newNext is not None :
node.next = newNext
else :
node.next = None
return True
return False # or maybe raise
</code></pre>