כתוב פעולה רקורסיבית המקבלת שרשרת חוליות מטיפוס מספר שלם ושני מספרים שלמים: מספר x ומספר y. הפעולה תגדע (תסיר) את כל האיברים בין שני מספרים אלו. ידוע כי ברשימה קיימים שני המספרים כך שהמספר x יופיע ברשימה לפני המספר y. אין למחוק את המספר x ואת המספר y, אלא מה שביניהם.

שם הפונקציה יהיה remove. ניתן להשתמש בהעמסה.

ידוע ש-x ו-y שונים זה מזה.

lst → 1  → 2 → 3 →4 → 5 → 6 → 7 → 8  → null

x=3

y=7

הרשימה תיראה לאחר הפעלת הפונקציה כך:

lst → 1 → 2 → 3 → 7 → 8 → null

פתרון מלא בשפת C#:

public static void Remove(Node<int> lst , int x, int y)

{

        Remove(  lst, x,y, null)

}

הפרמטרים לא מספיקים לנו, לכן נבצע העמסה:

public static void Remove(Node<int> lst , int x, int y, Node<int> xNode)

{

        if( xNode == null && lst.GetValue()==x)

        {

                        xNode = lst;

        }

        else if(  xNode != null  && lst.GetValue()==y  )

                {

                        xNode.SetNext(lst); //removing numbers between x and y

                        return;

                }

        Remove(lst.GetNext() , x, y ,nodeX);

}