我的链接列表DeleteAt函数出了什么问题



我正试图删除链表中的一个节点,当我执行此代码时,它会删除我给出的索引之前的所有节点。有什么方法可以纠正吗?

public void DeleteAt(int index)
{
if (index == 0)
{
head = head.next;
}
else
{
Node a = head;
Node n1 = null;
for(int i=0; i<index-1; i++)
{
n1 = a.next;
a.next = n1.next;
}
}
}

您的循环将在每次迭代中删除一个节点。您应该只做一次,循环之后。

其次,您应该保护您的代码不被取消引用NULL值。

注:。。。并使用描述性的变量名称。CCD_ 2和CCD_;这对任何试图理解您的代码的人都没有帮助。i是一个例外,因为像这样命名整数循环变量是很常见的。

public void DeleteAt(int index)
{
if (head == NULL) // List is empty; nothing to do
{
return;
}
if (index == 0)
{
head = head.next;
}
else
{
Node node = head;
for(int i=0; i<index-1; i++)
{
node = node.next;
if (node == NULL) { // Index is out of range
return;
}
}
if (node.next != NULL) { // Index is not out of range
node.next = node.next.next;
}
}
}

相关内容

  • 没有找到相关文章

最新更新