我写了一个函数,当给出一个值时,从圆形链表中删除一个节点:
def delete_node(head, value):
p=head
if p is None:
return None
while p.value!=value:
p=p.next
if p.next is head and p.value!=value:
return head
p.value=p.next.value
if p.next==head:
head=p
p.next=p.next.next
return head
它正在为某些输入工作,而不是为其他人.ex:delete_node(range(1,5),5)
,它返回了一个错误的列表。
我用于将列表转换为循环链表的方法:
def to_circular_list(plist):
head = None
tail = None
for element in plist:
node = Node(element)
if not head:
head = node
else:
tail.next = node
tail = node
if tail:
tail.next = head
return head
在这种情况下,plist可以是范围(1,5)。 用于创建节点的类:
class Node(object):
def __init__(self,value=None):
self.value = value
self.next = None