它应该从Stack中删除所有出现的值。 这是我的代码,但它在某种程度上与我的while语句有问题。
在某些测试用例中,它会突出显示while语句并向我抛出一个未处理的异常" System.NullReferenceException"
public bool RemoveAll(T value)
{
if (Count == 0)
return false;
if (Count == 1)
{
if (mTop.Data.Equals(value))
{
mTop = mTop.Next;
return true;
}
}
else
{
OurListNode<T> pTmp = mTop;
while (pTmp.Next != null)
{
if (pTmp.Next.Data.Equals(value))
{
pTmp.Next = pTmp.Next.Next;
}
pTmp = pTmp.Next;
}
return true;
}
return false;
}
答案 0 :(得分:1)
在https://www.google.com//search?q=fun
行中pTmp.Next = pTmp.Next.Next;
的指定值可能为pTmp.Next.Next
,因此null
while (pTmp.Next != null)
中的pTmp
为null
,而不是Next
有null
。检查while (pTmp != null && pTmp.Next != null)
以及
4.2.0-beta