Nadesłany przez Kamil Dworak, 26 lipca 2010 21:33
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_cs.cs:
/**************************************** * Implementacja Kolejki * * www.algorytm.org * * Opracowal Dworak Kamil * *****************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Main { /* 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); 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 Console.WriteLine("kolejka jest pusta"); } /* wyswietla zawartosc kolejki */ public void show() { if (first != null) { Elem temp = first; while (temp != null) { Console.Write(temp.getWartosc() + " "); temp = temp.getNext(); } Console.WriteLine(); } else { Console.WriteLine("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 { Console.WriteLine("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() { Console.WriteLine("(0) MENU\n(1) ADD\n(2) DELETE\n(3) SHOW"); Console.WriteLine("(4) ZLICZ\n(5) COPY\n(6) SCAL\n(7) EXIT"); } } public class Program { public static void Main(String[] args) { Kolejka kolejka = new Kolejka(); Kolejka kolejka2 = new Kolejka(); int t; String s; while ((s = Console.ReadLine()) != null) { t = int.Parse(s); switch (t) { case 0: Kolejka.menu(); break; case 1: Console.Write("co chcesz dodac?"); s = Console.ReadLine(); t = int.Parse(s); kolejka.add(t); break; case 2: kolejka.delete(); break; case 3: kolejka.show(); break; case 4: Console.WriteLine(kolejka.zlicz()); break; case 5: kolejka.copy(kolejka2); kolejka2.show(); break; case 6: kolejka.scal(kolejka2); break; case 7: return; } } } } }