All pastes #987223 Raw Edit

Stuff

public text v1 · immutable
·published 2008-04-16 10:33 UTC
rendered paste body
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();
		}
	}
}