import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class Listexempel { private static class ListNode { private char element; private ListNode next; } private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); // Uppgift 0: skriv färdigt denna först! public static void print(ListNode l) { while(l.next != null){ l = l.next; System.out.print(l.element); } } public static void primitiveListHandling() throws IOException { ListNode l1, ptr1; // l1 pekar alltid på listans huvud l1 = new ListNode(); // Listan huvud (innehåller ej data) l1.next = null; ptr1 = l1; // ptr pekar på sista noden // Bygg en lista av tecken String inputLine = in.readLine(); for ( int i = 0; i < inputLine.length(); i++ ) { ptr1.next = new ListNode(); // Addera en ny nod sist ptr1 = ptr1.next; // Flytta fram till nya noden ptr1.element = inputLine.charAt(i); // Stoppa in det inlästa tecknet ptr1.next = null; // Avsluta listan } print(l1); System.out.println(""); // Kopiera alla stora bokstäver till en ny lista (l2) ListNode l2, ptr2; l2 = new ListNode(); // Kopian l2.next = null; ptr2 = l2; ptr1 = l1.next; // första listelementet i originallistan while ( ptr1 != null ) { if ( Character.isUpperCase( ptr1.element ) ) { ptr2.next = new ListNode(); // Ny nod i kopian ptr2 = ptr2.next; // Flytta fram ptr2.element = ptr1.element; // Kopiera tecknet ptr2.next = null; // Avsluta } ptr1 = ptr1.next; // Flytta fram i originallistan } // Tag bort alla noder som innehåller 'X' ur kopian ptr2 = l2; while ( ptr2.next != null ) { ListNode temp = ptr2.next; // Handtag på nästa nod if ( temp.element == 'X' ) // Skall den tas bort? ptr2.next = temp.next; // Länka förbi else ptr2 = ptr2.next; // Nej, gå vidare * } // ptr2 får ej flyttas om den efterföljande noden togs bort! // Skriv ut kopian print(l2); // Vänd ordningen på l2 ListNode l3; l3 = new ListNode(); l3.next = null; } public static void structuredeListHandling() throws IOException { } public static void main(String[] args) { try { primitiveListHandling(); //structuredeListHandling(); } catch (IOException e) { e.printStackTrace(); } } }