Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MyQueue {
- private float[] arrayQueue;
- private int start;
- private int count;
- MyQueue(int size) {
- arrayQueue = new float[size];
- for (int i = 0; i < size; i++) {
- arrayQueue[i] = -1;
- }
- start = count = 0;
- }
- private void changeSize(int size) {
- System.out.println("---- Changing queue size = " + size);
- float[] tmp = new float[size];
- for (int i = 0; i < count; i++) {
- tmp[i] = arrayQueue[(start + i) % arrayQueue.length];
- }
- for (int i = count; i < size; i++) {
- tmp[i] = -1;
- }
- start = 0;
- arrayQueue = tmp;
- }
- public boolean put(float value) {
- if (count == arrayQueue.length) {
- changeSize(arrayQueue.length * 2);
- }
- arrayQueue[(start + count) % arrayQueue.length] = value;
- count++;
- return true;
- }
- public float get() throws RuntimeException {
- if (count == 0) {
- throw new RuntimeException("Queue is empty!");
- } else {
- float returnValue = arrayQueue[start];
- arrayQueue[start] = -1;
- start = (start + 1) % arrayQueue.length;
- if (--count <= (int)(arrayQueue.length * 0.25)) {
- changeSize(Math.max(1, arrayQueue.length / 4));
- }
- return returnValue;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement