private static void TestStrukturyA() { var arr = new[] { 5, 5, 1, 0, 10 }; var struktA = new StrukturaA(10); AddHeader("Struktura A - 1.28 z podrecznika"); Console.WriteLine(StrukturaA.Search(1, struktA)); Console.WriteLine(StrukturaA.Search(-5, struktA)); foreach (int val in arr) { Console.WriteLine(StrukturaA.Insert(val, struktA)); } Console.WriteLine(StrukturaA.Search(10, struktA)); for (int i = 0; i < 5; i++) { Console.WriteLine(StrukturaA.Select(struktA)); } foreach (int val in arr) { Console.WriteLine(StrukturaA.Insert(val, struktA)); } for (int i = 0; i < 5; i++) { Console.WriteLine(StrukturaA.Select(struktA)); } }
public static bool Insert(int val, StrukturaA set) { if (IsInBounds(set, val - 1) && set.Arr[val - 1] is null) { set.Arr[val - 1] = new Value(val); set.Indexes[set.N] = val - 1; set.N++; return(true); } return(false); }
public static int Select(StrukturaA set) { if (set.N > 0) { set.N--; int ind = set.Indexes[set.N]; int result = set.Arr[ind].Data; set.Arr[ind] = null; return(result); } return(-1); }
public static bool Search(int val, StrukturaA set) { return(IsInBounds(set, val - 1) && !(set.Arr[val - 1] is null)); }
private static bool IsInBounds(StrukturaA set, int val) { return(val < set.Size && val >= 0); }