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
Post a Comment