Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Búa þarf til Geniric clasa
- *1)Búa til ForgangsBiðröð sem getur tekur annaðhvort int,double eða stafró
- *2)Þarf að útbúa Vector sem þið smiðið sjálf
- * 2.1)Vector á að vera fylki sem byrjar með stærð 2
- * 2.2)Ef það eru ekki nógu mörg stök i vector þá tvöfaldast allt fylki i stærð
- *3)á að geta Sett inn i forgangs biðröð (Enqueu)
- *4)á að geta eytt úr henni (Dequeu) og skilað gildið
- *5)To string prentar út röðina
- * */
- /*þarf að hafa <t> <- þetta þyðir að þetta getur tekið öll "Generic types af data" i.e int string double ....
- extends Comparable<T> veitir okkur aðgang að nota compareTo fallið */
- class GenricForQueu <T extends Comparable<T>>{
- private Object[] PrioQueue;//upphafsStillum Fylkið okkar
- private int capacity;//geymir hverssu mörg stök erum við með i Biðröðini
- //upphafstilla
- public GenricForQueu(){
- this.PrioQueue = new Object[2];
- this.capacity=0;
- }
- //--------------------------------------------------------------------------------------------------
- //fallið til að til að setja inn gildi
- public void Enqueue (T data){
- //áður en við setjum i biðröðina það þarf a athuga hvort við erum með laust pláss i Fylkinu okkar
- if(this.PrioCap()+1 >= this.PrioSize()){this.DoublePrio();}
- //ef stakið er fyrsta stakið
- if(this.capacity == 0){this.PrioQueue[0]=data;this.capacity++;return;}
- /*utaf það er ekki hæght að setja á milli tvo stök, það sem þarf að gera er að finna hvar á gildið
- * að vera og svo hliðra öll stök svo setja gildið á réttan stað*/
- int pos=0;//saðstning þar sem gildið á að koma
- boolean found = false;//athugum hvort við fundum eigvað
- //forum igegnum öll stök og finnum hvar i fylki þarf gildið a vera
- for(int i=0; i< this.PrioCap();i++){if(data.compareTo((T) this.PrioQueue[i]) > 0){pos=i;found=true;break;}}
- //ef gildið er fundið þá hliðrum við öll gildi um eitt til að gera pláss fyrir data
- if(found){
- for(int i = this.PrioCap()+1; i > pos ;i--){this.PrioQueue[i] = this.PrioQueue[i-1];}
- this.PrioQueue[pos]=data;
- this.capacity++;
- return;
- }
- //ef við komumst herna þá vitum við að þetta hlytur að vera siðasta stackið a.k.a minnsta
- this.PrioQueue[this.PrioCap()]=data;
- this.capacity++;
- }
- //fall til að eyða
- public T DeQueue(){
- if(this.capacity < 0){return null;}//athugum hvort það er öruglega nógu mikið af stökum
- T data = (T) this.PrioQueue[0];//náum i stærsta stakið
- //hliðrum öll gildi um eitt
- for(int i =0;i < this.PrioCap();i++){
- this.PrioQueue[i]=this.PrioQueue[i+1];
- }
- this.capacity--;
- return data;//skilum gögn
- }
- public String toString(){
- String a="";
- for(int i =0;i < this.PrioCap();i++){a = a+this.PrioQueue[i]+"|";}
- return a;
- }
- //fallið DoublePrio tvöfaldar stærð á fylkinu
- private void DoublePrio(){
- //utaf það er ekki hæght að afrita fylki,
- //það þarf að fyrst að setja öll gögn i temporary fylki
- //svo tvöfalda aðalfylki og svo setja öll gögnin tilbaka
- Object[] temp = new Object[this.PrioSize()];
- for(int i =0;i < this.PrioSize();i++){temp[i] = (T) this.PrioQueue[i];}
- this.PrioQueue = new Object[this.PrioSize()*2];
- for(int i =0;i < temp.length;i++){ this.PrioQueue[i]=temp[i];}
- }
- public int PrioSize(){return this.PrioQueue.length;}//skilar stærð fylkiðs
- public int PrioCap(){return this.capacity;}//skilar fjölda staka i fylki
- //-----------------------------------------------------------------------------
- public static void main(String[] args) {
- //Tilraun Fyrir Int
- GenricForQueu<Integer> intPrio =new GenricForQueu<Integer>();
- intPrio.Enqueue(2);
- intPrio.Enqueue(1);
- intPrio.Enqueue(10);
- System.out.println(intPrio.toString());
- System.out.println(intPrio.DeQueue());
- System.out.println(intPrio.DeQueue());
- System.out.println(intPrio.DeQueue());
- //TilRaun fyrir String
- GenricForQueu<String> stringPrio =new GenricForQueu<String>();
- stringPrio.Enqueue("a");
- stringPrio.Enqueue("b");
- stringPrio.Enqueue("c");
- System.out.println(stringPrio.toString());
- System.out.println(stringPrio.DeQueue());
- System.out.println(stringPrio.DeQueue());
- System.out.println(stringPrio.DeQueue());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement