פעולות עזר חשובות ברשימות בשפת 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;
}