Created
August 13, 2016 10:06
-
-
Save YanchevskayaAnna/3af80798aaa7031856572dde42627643 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package week5.main.queue; | |
/** | |
* Created by Agryzkov on 11.08.2016. | |
*/ | |
public class MyArrayQueue<E> implements IMyQueue<E> { | |
private E[] arrayQueue; | |
private final int DEFAULT_CAPACITY = 5; | |
private int front, rear; | |
public MyArrayQueue() { //Yanchevskaya A можно вызвать внутри конструктор public MyArrayQueue(int capacity) | |
arrayQueue = (E[])(new Object[DEFAULT_CAPACITY]); | |
front = rear = 0; | |
} | |
public MyArrayQueue(int capacity) { | |
arrayQueue = (E[])(new Object[capacity]); | |
front = rear = 0; | |
} | |
@Override | |
public void insert(E element) { | |
if (isFull()) { | |
expansCapacity(); | |
} | |
if (front != 0 && rear == arrayQueue.length - 1) { | |
shiftElement(); | |
} | |
arrayQueue[rear] = element; | |
rear++; | |
} | |
@Override | |
public E remove() { | |
E result = null; | |
if (isEmpty()) { | |
System.out.println("queue is empty"); | |
} else { | |
result = arrayQueue[front]; //Yanchevskaya A. Но сам элемент ты не обнуляешь? | |
front ++; | |
} | |
return result; | |
} | |
@Override | |
public E getFront() { | |
return arrayQueue[front]; | |
} | |
@Override | |
public E getRear() { | |
return arrayQueue[rear - 1]; //Yanchevskaya A. проверка на rear !=0 | |
} | |
@Override | |
public int getSize() { | |
return rear - front; | |
} | |
@Override | |
public String toString() { | |
String str = ""; //Yanchevskaya A. используй StringBuilder | |
for (int i = front; i < rear; i++){ | |
str+=String.valueOf(arrayQueue[i]) + "\t"; | |
} | |
return str; | |
} | |
private boolean isEmpty() { | |
return rear == front; | |
} | |
private boolean isFull() { | |
return arrayQueue.length == getSize(); | |
} | |
private void expansCapacity(){ | |
E[] largQueue = (E[])(new Object[getSize() * 2]); | |
System.arraycopy(arrayQueue, 0, largQueue, 0, arrayQueue.length); | |
arrayQueue = largQueue; | |
} | |
private void shiftElement() { | |
E[] arrTemp = (E[])(new Object[arrayQueue.length]); | |
System.arraycopy(arrayQueue, front, arrTemp, 0, arrayQueue.length); //Yanchevskaya A. посл. параметр - это кол-во копируемых элементов, копируем size | |
arrayQueue = arrTemp; | |
rear = rear - front; | |
front = 0; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment