删除具有特定值的嵌套对象

马哈迪

我有一堂课 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章