public CircularArray Resize(int bottom, int top) { CircularArray newTasks = new CircularArray(logCapacity + 1); for (int i = top; i < bottom; i++) { newTasks.Put(i, Get(i)); } return(newTasks); }
//изменить размер массива public CircularArray Resize(int bottom, int top) { CircularArray newTasks = new CircularArray(logCapacity + 1); //создаем новый циклический массив логической емкостью на 1 больше, чем было for (int i = top; i < bottom; i++) { newTasks.Put(i, Get(i)); //переносим все элементы в новый массив } return(newTasks); //возвращаем новый заполненный циклический массив }
public void PushBottom(Task t) { int oldBottom = bottom; int oldTop = top; int size = oldBottom - oldTop; if (size >= tasks.Capacity - 1) { tasks = tasks.Resize(oldBottom, oldTop); } tasks.Put(oldBottom, t); bottom = oldBottom + 1; }
public void PushBottom(Task t) { int oldBottom = bottom; //запоминаем нижний индекс int oldTop = top; //запоминаем верхний индекс int size = oldBottom - oldTop; //вычисляем разницу между верхним индексом и нижним if (size >= tasks.Capacity - 1) //если она больше, чем вмсетимость - 1 { tasks = tasks.Resize(oldBottom, oldTop); //меняем размер циклического массива } tasks.Put(oldBottom, t); //кладем задачу в конец очереди bottom = oldBottom + 1; //двигаем нижний индекс }