import java.io.*; class UseCharListsD1 { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); CharList L1=null,L2=null,L3; char ch1,ch2; try { System.out.print("Enter first list of characters: "); L1 = CharListDIO.read(in); System.out.print("Enter second list of characters: "); L2 = CharListDIO.read(in); } catch(ListFormatException e) { System.out.println("Error: "+e.getMessage()); } System.out.print("The lists are: "); CharListDIO.print(L1); System.out.print(" and "); CharListDIO.print(L2); System.out.println(); System.out.println("Call append "); L3=append(L1,L2); System.out.print("The lists are now: "); CharListDIO.print(L1); System.out.print(" and "); CharListDIO.print(L2); System.out.print(" and "); CharListDIO.print(L3); System.out.println(); System.out.print("Enter first character: "); ch1=in.readLine().charAt(0); System.out.print("Enter second character: "); ch2=in.readLine().charAt(0); System.out.print("Call change of first to "); System.out.println("second character in second list "); L3=change(ch1,ch2,L2); System.out.print("The lists are now: "); CharListDIO.print(L1); System.out.print(" and "); CharListDIO.print(L2); System.out.print(" and "); CharListDIO.print(L3); System.out.println(); } public static CharList append(CharList L1,CharList L2) { if(L1.isempty()) return L2; else { CharList L3 = append(L1.tail(),L2); return L3.cons(L1.head()); } } public static CharList change(char ch1,char ch2,CharList L) { if(L.isempty()) return CharListD.empty(); else { CharList T=change(ch1,ch2,L.tail()); char h=L.head(); if(h==ch1) return T.cons(ch2); else return T.cons(h); } } }