Python 删除链接列表中的最后一个元素
我只使用Node类创建了一个列表Python 删除链接列表中的最后一个元素,python,nodes,Python,Nodes,我只使用Node类创建了一个列表 class Node: def __init__(self, init_data): self.data = init_data self.next = None def get_data(self): return self.data def get_next(self): return self.next def set_data(self, new_data): self.data = new_data de
class Node:
def __init__(self, init_data):
self.data = init_data
self.next = None
def get_data(self):
return self.data
def get_next(self):
return self.next
def set_data(self, new_data):
self.data = new_data
def set_next(self, new_next):
self.next = new_next
def __str__(self):
return str(self.data)
我初始化了列表,最后一个节点是None
。
我正在尝试删除此节点,但不知道如何删除?一个好方法是跟踪上一个节点和当前节点,然后在到达列表末尾时,将“上一个”中的“下一个”设置为“无”
prev = None
cur = head
while cur.next is not None:
prev = cur
cur = cur.next
if prev: #in case the head is the tail
prev.next = None
这样做的一个好方法是跟踪上一个节点和当前节点,然后在到达列表末尾时,将“上一个”中的“下一个”设置为“无”
prev = None
cur = head
while cur.next is not None:
prev = cur
cur = cur.next
if prev: #in case the head is the tail
prev.next = None
您可能需要一个
列表
类来管理节点
class List:
def __init__(self):
self._nodes = None
def push(self, node):
node.set_next(self._nodes)
self._nodes = node
return self
def pop(self):
if self._nodes is None:
return None
temp = self._nodes
self._nodes = temp.get_next()
return temp
def __len__(self):
l = 0
n = self._nodes
while n is not None:
n = n.get_next()
l += 1
return l
def remove(self, node):
n = self._nodes
p = None
while n is not None:
if n is node:
p.set_next(n.get_next())
n.set_next(None)
return True
p = n
n = n.get_next()
return False
您可能需要一个
列表
类来管理节点
class List:
def __init__(self):
self._nodes = None
def push(self, node):
node.set_next(self._nodes)
self._nodes = node
return self
def pop(self):
if self._nodes is None:
return None
temp = self._nodes
self._nodes = temp.get_next()
return temp
def __len__(self):
l = 0
n = self._nodes
while n is not None:
n = n.get_next()
l += 1
return l
def remove(self, node):
n = self._nodes
p = None
while n is not None:
if n is node:
p.set_next(n.get_next())
n.set_next(None)
return True
p = n
n = n.get_next()
return False
在链表类中添加此方法,如下所示
class LinkedList():
def __init__(self, head=None):
if head == "" or head is None:
self.head = None
else:
self.head = Node(head)
在链表类中添加此方法,如下所示
class LinkedList():
def __init__(self, head=None):
if head == "" or head is None:
self.head = None
else:
self.head = Node(head)
如果self.next==None,则将最后一个节点分配到None旁边?不确定要实现什么。如果最后一个节点不应具有
next
属性,则只需del lastnode.next
即可。但正如我所说,我不确定这是您想要的。尝试获取您想要的:我们可以使用您的节点创建一个链表:llist=Node(0,Node(1,Node(2)))
。您是否询问如何修改llist
,使其成为节点(0,节点(1))
?或者其他?如果self.next==None,则将最后一个节点分配到None旁边?不确定要实现什么。如果最后一个节点不应具有next
属性,则只需del lastnode.next
即可。但正如我所说,我不确定这是您想要的。尝试获取您想要的:我们可以使用您的节点创建一个链表:llist=Node(0,Node(1,Node(2)))
。您是否询问如何修改llist
,使其成为节点(0,节点(1))
?还是别的什么?