/// <summary> /// Считать кол-во элементов, удовлетворяющих предикату. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="l"></param> /// <param name="pred"></param> /// <returns></returns> static int CountPredNode <T>(LinkedListNode <T> l, MyPred <T> pred) { if (l == null) { return(0); } var k = 0; NewCountPredNode(l, pred, ref k); return(k); }
static LinkedListNode <T> NewCountPredNode <T>(LinkedListNode <T> l, MyPred <T> pred, ref int k) { if (l == null) { return(null); } if (pred(l.Value)) { k++; } return(NewCountPredNode(l.Next, pred, ref k)); }
/// <summary> /// Возвращает ссылку на первый элемент, удовлетворяющий предикату. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="l"></param> /// <param name="pred"></param> /// <returns></returns> static LinkedListNode <T> FirstPredNode <T>(LinkedListNode <T> l, MyPred <T> pred) { if (l == null) { return(null); } if (pred(l.Value)) { return(l); } return(FirstPredNode(l.Next, pred)); }