// tra1_2010_x2_pohja.java SJ /* Toteutetaan tehtavan X1 poistaminen seka TraLinkedList:lle,eata java.util.LinkedList:lle. Kirjoita siis algoritmit (metodit) jotka saavat parametreinaan kaksi kasvavassa jarjestyksessa olevaa kokonaislukulistaa (a) TraLinkedList:lle, (b) java.util.LinkedList ja jotka poistavat ensimmaisesta kaikki alkiot jotka esiintyvat toisessa. Jaljelle jaavat alkiot jaavat listaan edelleen kasvavaan jarjestykseen. Ala kayta valmiita kokoelmien remove(element), removeAll(), tms. metodeja. Mitka ovat algoritmiesi aikavaativuudet? Algoritmien aikavaativuudet (tehokkuudet) vaikuttavat arvosteluun hieman. Ota paaohjelman sisaltava pohja kurssin www-sivulta. */ // molemmat kirjastot import java.util.LinkedList; import fi.joensuu.cs.tra.*; public class tra1_2010_x2_pohja { public static void main(String[] args) { // syotteen koko int N = 10; if (args.length > 0) N = Integer.valueOf(args[0]); // satunnaislukusiemen int siemen = 42; if (args.length > 1) siemen = Integer.valueOf(args[1]); // luodaan esimerkkidatat Integer[] T1 = new Integer[N]; Integer[] T2 = new Integer[N]; // taytetaan alkioilla java.util.Random r = new java.util.Random(siemen); for (int i = 0; i < N; i++) { T1[i] = r.nextInt(N); T2[i] = r.nextInt(N*2); } // taulukot kasvavaan jarjestykseen java.util.Arrays.sort(T1); java.util.Arrays.sort(T2); // ----------------------------------------------- // a-kohdan testaus: System.out.println("\n(a) kohta:\n"); // luodaan syotelistat TraLinkedList TL1 = new TraLinkedList(); TraLinkedList TL2 = new TraLinkedList(); for (Integer i : T1) TL1.insert(TL1.EOL, i); for (Integer i : T2) TL2.insert(TL2.EOL, i); // tulostetaan listat if (N <= 20) { System.out.print("TL1: "); for (Integer i : TL1) System.out.print(" " + i); System.out.println(); System.out.print("TL2: "); for (Integer i : TL2) System.out.print(" " + i); System.out.println(); } // kutsutaan tehtavaa X2a poista(TL1, TL2); // tulostetaan muutettu lista if (N <= 20) { System.out.print("TL1x:"); for (Integer i : TL1) System.out.print(" " + i); System.out.println(); } // ----------------------------------------------- // b-kohdan testaus: System.out.println("\n(b) kohta:\n"); // luodaan syotelistat LinkedList LL1 = new LinkedList(); LinkedList LL2 = new LinkedList(); for (Integer i : T1) LL1.add(i); for (Integer i : T2) LL2.add(i); // tulostetaan listat if (N <= 20) { System.out.print("LL1: "); for (Integer i : LL1) System.out.print(" " + i); System.out.println(); System.out.print("LL2: "); for (Integer i : LL2) System.out.print(" " + i); System.out.println(); } // kutsutaan tehtavaa X2b poista(LL1, LL2); // tulostetaan muutettu lista if (N <= 20) { System.out.print("LL1x:"); for (Integer i : LL1) System.out.print(" " + i); System.out.println(); } } // main() /** * Poistaa listasta kohde kaikki sellaiset alkiot jotka * loytyvat listasta poistettavat. * @param kohde lista josta poistetaan * @param poistettavat lista jonka sisaltamat alkiot poistetaan * Molemmat listat ovat kasvavassa jarjestyksessa. */ public static void poista(TraLinkedList kohde, TraLinkedList poistettavat) { // X2a tahan } // poista() /** * Poistaa listasta kohde kaikki sellaiset alkiot jotka * loytyvat t listasta poistettavat. * @param kohde lista josta poistetaan * @param poistettavat lista jonka sisaltamat alkiot poistetaan * Molemmat listat ovat kasvavassa jarjestyksessa. */ public static void poista(LinkedList kohde, LinkedList poistettavat) { // X2b tahan } // poista() } // class