从循环链表中删除节点时出错

时间:2014-02-08 15:25:44

标签: python

我写了一个函数,当给出一个值时,从圆形链表中删除一个节点:

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

0 个答案:

没有答案