我有一堂课 Point
public class Point
{
public int Value;
public Point Next;
}
和这个类的嵌套对象定义如下:
var p1 = new Point() { Value = 0 };
var p2 = new Point() { Value = 1 };
var p3 = new Point() { Value = -1 };
var p4 = new Point() { Value = -2 };
var p5 = new Point() { Value = 2 };
var p6 = new Point() { Value = 3 };
p1.Next = p2;
p2.Next = p3;
p3.Next = p4;
p4.Next = p5;
p5.Next = p6;
RemoveNegative(p1);
我正在寻找一种方法来删除所有Point
负值的 s
所以你基本上有一个链表(正如orhtej2指出的那样),这意味着你必须一个一个地遍历你的点。我假设您想删除负点并在之后重新连接到该点?所以在你的例子中:
P1 -> P2 -> P3 -> P4 -> P5 -> P6
会成为
P1 -> P2 -> P5 -> P6
您想在每个点停下来,向前扫描,直到找到一个非负点,然后将 Next 设置为该点。然后从新点开始重复整个过程。
public void RemoveNegative(Point p) {
while (p != null) {
Point nextPoint = p.Next;
while (nextPoint != null && nextPoint.Value < 0) {
nextPoint = nextPoint.Next;
}
p.Next = nextPoint;
p = nextPoint;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句