擅长:python、mysql、java
<p>因为这是一个单链链表,所以必须在tail之前遍历该列表以到达节点。我想你的职能应该是</p>
<pre><code>def deleteAtTail(self):
temp = self.head
while(temp.next != None):
if temp.next == tail: #finds the node just before tail
break
temp = temp.next
temp.next = None
self.tail = temp
</code></pre>
<p>我们设置<code>self.tail = temp</code>,因为temp等于列表末尾之前的节点。所以我们删除temp(通过删除它的最后一个引用),然后将tail设置为我们先前标识为列表中倒数第二个节点的节点,因为它实际上是列表的新结尾。在</p>
<p><strong>编辑:</strong></p>
<p>以解决一些对此答案的评论所关注的问题。在处理单链或双链表时,最好保持<code>head</code>、<code>tail</code>和{<cd4>}指针。知道tail的位置对于在列表中插入计算上合理的内容是非常有价值的。在</p>
<p>这意味着您的插入方法可以从以下位置开始:</p>
^{pr2}$
<p>时间复杂度为O(n):</p>
<pre><code>def insert(value):
self.tail.next = Node()
self.tail.next.value = value
self.tail = self.tail.next
</code></pre>
<p>它具有O(1)的更有利的时间复杂度。在</p>