java - implementing queue with arrays -


im confused why queue not working, believe there problem in enqueue , dequeue methods. im not sure, supposed implement class initial array size set 8. array size doubled once number of elements exceeds size. after element removed beginning of array, need shift elements in array 1 position left. write test program adds 20 numbers 1 20 queue , removes these numbers , displays them. here code

    public class queue {     private int[] elements;     private int size;     private int first;     private int last;     public static final int default_capacity = 8;      public queue(){         (default_capacity);     }     public queue (int capacity){         elements = new int[capacity];         first = 0;         last = 0;         size = 8;     }     public void enqueue(int v){ //fills queue , lengthens if necessary         if (last>=size){             int[] temp = new int[elements.length*2];         system.arraycopy(elements, 0, temp, 0, elements.length);             elements = temp;         }         elements[last]=v;         last++;      }     public int dequeue(){              int output = elements[first];          system.out.print(output + " ");         while(last != 0){             for(int = 0; i<last;i++){                 elements[i]= elements[i-1];             }             last--;         }         return output ;     }     public boolean empty(){ // tests empty queue           return last==first;      }     public int getsize(){         size=last;         return size;     }     } 

and here tester class.

    public class queuetester {     public static void main(string[] args){         queue q = new queue();         q.enqueue(1);         q.enqueue(2);         q.enqueue(3);         q.enqueue(4);         q.enqueue(5);         q.enqueue(6);         q.enqueue(7);         q.enqueue(8);         q.enqueue(9);         q.enqueue(10);         q.enqueue(11);         q.enqueue(12);         q.enqueue(13);         q.enqueue(14);         q.enqueue(15);         q.enqueue(16);         q.enqueue(17);         q.enqueue(18);         q.enqueue(19);         q.enqueue(20);         while (q.empty()){             q.dequeue(); 

while(last != 0){     for(int = 0; i<last;i++){         elements[i]= elements[i-1];     }     last--; } 

remove while loop. if you're trying make sure it's not dequeueing empty queue have if condition check ensure size > 0.

 public int dequeue(){          if (getsize() == 0) {              // throw error or          }              int output = elements[first];          system.out.print(output + " ");          for(int = 0; i<last;i++){              elements[i]= elements[i-1];          }          last--;          return output ;     } 

additionally need print output in tester class, , assume want dequeue while queue not empty:

 while (!q.empty()){             system.out.println(q.dequeue()); 

Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -