Nadesłany przez Kamil Dworak, 26 lipca 2010 21:20
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
kolejka_1_j.java:
/**************************************** * Implementacja Kolejki * * www.algorytm.org * * Opracowal Dworak Kamil * *****************************************/ import java.util.Scanner; /* jeden wezel */ class Elem { private int wartosc; private Elem next; public Elem(int x){ wartosc = x; next = null; } public void setNext(Elem e){ next = e; } public Elem getNext(){ return next; } public int getWartosc(){ return wartosc; } } /* kolejka */ class Kolejka { Elem first, last; public Kolejka(){ first = last = null; } public Elem getFirst(){ return first; } public Elem getLast(){ return last; } public void setLast(Elem e){ last = e; } public void setFirst(Elem e){ first = e; } /* dodaje element na koniec kolejki */ public void add(int x){ Elem temp = new Elem(x); if(first==null){ first = last = temp; } else { last.setNext(temp); //temp.setNext(last); last = temp; } } /* sciaga z kolejki element na 1 miejscu */ public void delete(){ if(first!=null){ if(first.getNext()==null){ last=null; } first = first.getNext(); } else System.out.println("kolejka jest pusta"); } /* wyswietla zawartosc kolejki */ public void show(){ if(first!=null){ Elem temp = first; while(temp!=null){ System.out.print(temp.getWartosc() + " "); temp = temp.getNext(); } System.out.println(); } else { System.out.println("kolejka jest pusta"); } } /* zlicza liczbe elemenetow na kolejce */ public int zlicz(){ if(first!=null){ int licznik=0; Elem temp = first; while(temp!=null){ licznik++; temp=temp.getNext(); } return licznik; } return 0; } /* kopiuje cala kolejke1 do kolejki k2 * (kolejka 1 zostaje bez zmian */ public void copy(Kolejka kolejka2){ Elem temp = first; if(temp!=null){ while(temp!=null){ kolejka2.add(temp.getWartosc()); temp=temp.getNext(); } } else { System.out.println("kolejka jest pusta"); } } /* scala 2 kolejki * wynik znajduje sie w kolejce 1 * kolejka 2 jest pusta */ public void scal(Kolejka kolejka2){ if(first==null){ first = kolejka2.getFirst(); last = kolejka2.getLast(); } else if(first!= null && kolejka2.getFirst()!=null){ last.setNext(kolejka2.getFirst()); last = kolejka2.getLast(); } kolejka2.setLast(null); kolejka2.setFirst(null); } /* menu */ public static void menu(){ System.out.println("(0) MENU\n(1) ADD\n(2) DELETE\n(3) SHOW"); System.out.println("(4) ZLICZ\n(5) COPY\n(6) SCAL\n(7) EXIT"); } } public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); Kolejka kolejka = new Kolejka(); Kolejka kolejka2 = new Kolejka(); int t; while(in.hasNext()){ t=in.nextInt(); switch(t){ case 0: Kolejka.menu(); break; case 1: t=in.nextInt(); kolejka.add(t); break; case 2: kolejka.delete();break; case 3: kolejka.show(); break; case 4: System.out.println(kolejka.zlicz());break; case 5: kolejka.copy(kolejka2); kolejka2.show(); break; case 6: kolejka.scal(kolejka2); break; case 7: System.exit(0); } } } }