פעולות עזר חשובות ברשימות בשפת C#פעולה המקבלת רשימ...

פעולות עזר חשובות ברשימות בשפת C#

פעולה המקבלת רשימה של מספרים שלמים ומוחקת את האיבר הראשון שהיא רואה בעל הערך x ומחזירה הפנייה לרשימה המתוקנת.

C#:
public static Node<int> Remove(Node<int> lst, int x)
{

//empty list
if(lst ==null)
return lst;

// מחיקה מההתחלה
if(lst.GetValue()==x)
return lst.GetNext();

Node<int> p = lst;
//מחיקה מהאמצע או מהסוף
while( p.HasNext() )
{
if( p.GetNext().GetValue() == x)
{
p.SetNext( p.GetNext().GetNext() );
return lst;
}
p=p.GetNext();
}
return lst;
}




Java:
public static Node<Integer> remove(Node<Integer> lst, int x)
{

//empty list
if(lst ==null)
return lst;

// מחיקה מההתחלה
if(lst.getValue()==x)
return lst.getNext();

Node<Integer> p = lst;
//מחיקה מהאמצע או מהסוף
while( p.hasNext() )
{
if( p.getNext().getValue() == x)
{
p.setNext( p.getNext().getNext() );
return lst;
}
p=p.getNext();
}
return lst;
}



פעולה המקבלת רשימה של מספרים שלמים ומוחקת את כל אברי ה-x שהיא רואה ומחזירה הפנייה לרשימה המתוקנת.
C#:
public static Node<int> RemoveAllX(Node<int> lst, x)
{
Node<int> f = new Node<int> (-1, lst); // איבר מזויף

Node<int> p = f;

while(p.HasNext())
{
if(p.GetNext().GetValue() ==x) //delete x
p.SetNext( p.GetNext().GetNext() );
else
p = p.GetNext();
}

return f.GetNext();

}



java:
public static Node<Integer> removeAllX(Node<Integer> lst, x)
{
Node<Integer> f = new Node<Integer> (-1, lst); // איבר מזויף

Node<Integer> p = f;

while(p.hasNext())
{
if(p.getNext().getValue() ==x) //delete x
p.setNext( p.getNext().getNext() );
else
p = p.getNext();
}

return f.getNext();
}
}



הוספת איבר בתחילת הרשימה:
C#
public static Node<int> Add (Node<int> lst, x)
{
Node<int> n = new Node<int>( x, lst );
return n;
}



Java:
public static Node<Integer> add (Node<Integer> lst, x)
{
Node<Integer> n = new Node<Integer>( x, lst );
return n;
}


פעולת אשר מוסיפה איבר לרשימה בסדר עולה :
C#:
public static Node<int> Add (Node<int> lst , int x)
{
Node<int> n = new Node<int> (x,null); // יצירת חולייה חדשה שהערך שלה הוא איקס

if(lst==null) //empty list
return n;

if(lst.GetValue() >= x)
{
n.SetNext(lst);
return n;
}
Node<int> p = lst;


while( p.HasNext())
{
if(p.GetNext().GetValue()>=x)
{
n.SetNext( p.GetNext());
p.SetNext(n );
return lst;
}
}

p.SetNext(n); //הוספה לסוף

return lst;

}



java:
public static Node<Integer> add (Node<Integer> lst , int x)
{
Node<Integer> n = new Node<Integer> (x,null); // יצירת חולייה חדשה שהערך שלה הוא איקס

if(lst==null) //empty list
return n;

if(lst.getValue() >= x)
{
n.setNext(lst);
return n;
}
Node<Integer> p = lst;


while( p.hasNext())
{
if(p.getNext().getValue()>=x)
{
n.setNext( p.getNext());
p.setNext(n );
return lst;
}
}

p.setNext(n); //הוספה לסוף

return lst;

}