linked list - ADT Queue without using Java libraries -


i preparing upcoming exam , there 1 tast older exam, have been given adtqueue

public interface adtqueue<t> { public void enq(t element); public void deq(); public t front(); public boolean empty(); }  

we have implement class queue inner class constructor listelement(t element) , methods in it...

i have made implementation, following code:

public class queue<t> implements adtqueue<t> { private listelement<t> head; private listelement<t> tail;  public queue(){     head=null;     tail=null; }  public void enq (t element){     if (empty()){         head= new listelement(element);         tail= new listelement(element);     }      tail.nextelement=new listelement(element);     tail=tail.nextelement; }  public void deq(){     if (empty()){         throw new exception();     }      t firstelement=front();     head=head.nextelement;     if (head==null){         tail = null;     } }  public t front(){     if(empty()){         return null;     }     return head.element; } public boolean empty(){     return (head==null); }  public class listelement<t>{     private t element = null;     private listelement<t> nextelement = null;      public listelement(t element) {         this.element = element;     }      public t getelement() {         return element;     }      public listelement<t> getnextelement() {         return nextelement;     }      public void setnextelement(listelement<t> nextelement) {         this.nextelement = nextelement;     }    } 

i know, if correct did , if have done better. also, how like, if wanted same double linked list? know, need get- , setpreviouselement, not sure, going change in enqueue , dequeue methods... happy, if guys give advice thx in advance

1) suggestion better return types:

  • public boolean enqueue(t element)

    should boolean, instead of void.

  • public t dequeue();

    should t, instead of void.

2) link - single object in linked list.

lines 3+4:

upon arrival of new element, create 2 different links same data (t), instead of 1 link (that head & tail points link).

lines 5+6: think forgot wrap rest of code else{...}.

before changes:

1 public void enq (t element){ 2 if (empty()){ 3    head= new listelement(element); 4    tail= new listelement(element);   }  5 tail.nextelement=new listelement(element); 6 tail=tail.nextelement; 

}

after suggested changes:

1 public void enq (t element){ 2 if (empty()){ 3    head= new listelement(element); 4    tail= head; 5  }else{  6   tail.nextelement=new listelement(element); 7   tail=tail.nextelement;   } 

}


Comments