/** * Fail Ahelad_lahendus.java * @author Jaanus Poial * @version 0.5 kevad 99 */ //==================================================================== // Na"ide ahelatest. //==================================================================== class Ahelad_lahendus { // pohiprogramm, sisaldab ainult main static public void main (String[] argumendid) { // kommentaarid kirjeldavad soovitud va"ljundit // kui lisamine on u"mber tehtud pistemeetodi peale System.out.println ("Algus"); // Algus Element minuAhel = null; System.out.println (minuAhel); // null minuAhel = new Element ("e1"); System.out.println (minuAhel); // e1; minuAhel = minuAhel.lisa (null); System.out.println (minuAhel); // e1; minuAhel = minuAhel.lisa (new Element ("e0")); System.out.println (minuAhel); // e0, e1; minuAhel = minuAhel.lisa (new Element ("e3")); System.out.println (minuAhel); // e0, e1, e3; minuAhel = minuAhel.lisa (new Element ("e2")); System.out.println (minuAhel); // e0, e1, e2, e3; minuAhel = minuAhel.eemalda (minuAhel.otsi ("e4")); System.out.println (minuAhel); // e0, e1, e2, e3; minuAhel = minuAhel.eemalda (minuAhel.otsi ("e0")); System.out.println (minuAhel); // e1, e2, e3; minuAhel = minuAhel.eemalda (minuAhel.otsi ("e2")); System.out.println (minuAhel); // e1, e3; minuAhel = minuAhel.eemalda (minuAhel.otsi ("e3")); System.out.println (minuAhel); // e1; minuAhel = minuAhel.eemalda (minuAhel.otsi ("e1")); System.out.println (minuAhel); // null System.out.println ("Lopp"); // Lopp } // main() lopp } // Ahelad_lahendus lopp //=========================================================== // Lihtahela klass //=========================================================== class Element implements java.util.Enumeration { //lisainfo alamklassides String nimi; Element jargmine; Element() { //konstruktor vaikimisi } Element (String s) { //konstruktor nimega isendite loomiseks paneNimi (s); } public String votaNimi() { return nimi; } public Element votaJargmine() { return jargmine; } public void paneNimi (String s) { nimi = s; } public void paneJargmine (Element e) { jargmine = e; } public Element lisa (Element e) { //annab uue alguse tagasi if (e == null) return this; // ei olnudki soovi lisada if (e == this) return this; // ebanormaalne situatsioon niikuinii if (e.votaNimi().compareTo (votaNimi()) < 0) { // e.nimi < this.nimi e.paneJargmine (this); // lisamine ahela algusesse return e; } Element abi = this; // hakkame kohta otsima abi jarele while (abi.votaJargmine() != null) { if (e.votaNimi().compareTo (abi.votaJargmine().votaNimi()) < 0) { // lisamine abi jarele e.paneJargmine (abi.votaJargmine()); abi.paneJargmine (e); return this; } abi = abi.votaJargmine(); } abi.paneJargmine (e); // lisamine ahela loppu e.paneJargmine (null); // igaks juhuks return this; } // lisa() lopp public Element eemalda (Element e) { //annab uue alguse voi null if (e == null) return this; //ei eemalda midagi if (e == this) return votaJargmine(); //esimese eemaldamine Element abi = this; while (abi != null) { if (e == abi.votaJargmine()) { abi.paneJargmine (e.votaJargmine()); } abi = abi.votaJargmine(); } return this; } // eemalda() lopp public Element otsi (String s) { //kui ei leia, siis null Element abi = this; while (abi != null) { if (s.equals (abi.votaNimi())) return abi; abi = abi.votaJargmine(); } return null; //kui leiti varem, siis siia ei satuta } // otsi() lopp public String toString() { StringBuffer puhver = new StringBuffer(); Element abi = this; while (abi != null) { puhver.append (abi.votaNimi()); // nimi if (abi.votaJargmine() != null) puhver.append (", "); // vaheeraldaja else puhver.append (";"); // lopueraldaja abi = abi.votaJargmine(); } return puhver.toString(); // puhver -> String } // toString() lopp public boolean hasMoreElements() { return votaJargmine() != null; } public Object nextElement() throws java.util.NoSuchElementException { if (votaJargmine() == null) throw new java.util.NoSuchElementException(); else return votaJargmine(); } } // Element lopp //=========================================================== // faili lopp //===========================================================