微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过索引值为单链表实现删除节点

如何解决通过索引值为单链表实现删除节点

我需要编写一个函数删除给定索引值处的节点。索引值作为参数传递。

删除:此方法链接列表中删除一个节点。如果将索引作为参数传递,则该方法删除该索引处的节点。如果没有传递索引,则删除列表中的第一项

到目前为止,我有

class Node:
  def __init__(self,dataval=None):
    self.dataval = dataval
    self.nextval = None

class LinkedList:
  def __init__(self):
    self.headval = None
  def __str__(self):
    node = self.headval
    output = "[ "
    while(node != None):
      output = output + str(node.dataval) + ","
      node = node.nextval
    if(len(output) > 2):
      output = output[:-2]
    return output + " ]"


  def delete(self,index=0):
    if self.headval is None:
      print("This list has no element to delete")
      return 
        
    if self.headval ==index:
      self.headval=self.headval.nextval 
      return 
        
    n=self.headval 
    while n.nextval is not None:
      if n.nextval.dataval==index:
        break
      n=n.nextval

    if n.nextval is None:
      print("Item not found in list")
    else:
      n.nextval=n.nextval.nextval

现在,与其删除该索引上的值,不如删除具有该值的任何索引。我该如何更改

解决方法

delete方法中:

(1)更改:

if self.headval ==index:

收件人:

if index == 0:

(2)并更改:

if n.nextval.dataval==index:

...至:

index -= 1
if index == 0:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。