diff --git a/SetLocomotivesGeneric.java b/SetLocomotivesGeneric.java new file mode 100644 index 0000000..b74c1e7 --- /dev/null +++ b/SetLocomotivesGeneric.java @@ -0,0 +1,57 @@ +public class SetLocomotivesGeneric +{ + private final T[] _places; + + public int Count() { + return _places.length; + } + + public SetLocomotivesGeneric(int count) { + _places = (T[]) new Object[count]; + } + + public boolean Insert (T locomotive) { + return Insert(locomotive, 0); + } + + public boolean Insert (T locomotive, int position) { + if (position >= _places.length || position < 0) return false; + if (_places[position] == null) { + _places[position] = locomotive; + return true; + } + + int emptyEl = -1; + for (int i = position + 1; i < Count(); i++) + { + if (_places[i] == null) emptyEl = i; + break; + } + if (emptyEl == -1) + { + return false; + } + for (int i = emptyEl; i > position; i--) + { + _places[i] = _places[i - 1]; + } + _places[position] = locomotive; + return true; + } + + public boolean Remove (int position) { + if (position >= _places.length || position < 0) return false; + _places[position] = null; + return true; + } + + public T Get(int position) + { + if (position >= _places.length || position < 0) + { + return null; + } + return _places[position]; + } + +}