【发布时间】:2018-03-17 23:42:40
【问题描述】:
我正在处理一个双向链表,但我无法返回从列表中间删除一个项目的值。我不太确定为什么,并且会很感激第二双眼睛看透这一点。
如果我附加三个数字,然后删除索引1, 处的数字,它应该返回索引1 处的值。
class Linked_List:
class __Node:
def __init__(self, val):
self.val = val
self.next = None
self.prev = None
return
def __init__(self):
self.__header = self.__Node(None)
self.__trailer = self.__Node(None)
self.__header.next = self.__trailer
self.__trailer.prev = self.__header
self.__size = 0
def __len__(self):
return self.__size
def remove_element_at(self, index):
if index > self.__size or index < 0 or index == self.__size:
raise IndexError
cur = self.__header.next
element_to_return = cur
if index == 0:
self.__header.next = self.__header.next.next
else:
for i in range(0, index):
cur = cur.next
element_to_return = cur.val
cur.next = cur.next.next
self.__size -= 1
return str(element_to_return.val)
【问题讨论】:
-
if not (0 <= index < self.__size):- 也 - 请显示链表结构,什么是 self.__header.next f.e.或者什么是 self.__header.next.next。 DLL 通常有一个 prev(可能是 None)和一个 Next(可能是 None)——在 X 处删除通常是从 head 开始,然后向下直到 X 到达,然后修改 prev 指向 next,返回 curr.Value。完成
标签: python-3.x return-value doubly-linked-list