כתוב פעולה רקורסיבית המקבלת שרשרת חוליות מטיפוס מס...
כתוב פעולה רקורסיבית המקבלת שרשרת חוליות מטיפוס מספר שלם ושני מספרים שלמים: מספר 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);
}