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();
}
}
}