/** * Fail Element.java * @author Jaanus Poial * @version 0.3 kevad 99 * @since JDK 1.2 */ //========================================================= // Liides vo~rreldavate asjade vo~rdlemiseks //========================================================= import java.lang.Comparable; // int compareTo (Object v); //========================================================= // Lihtahela klass vo~rreldavate vo~tmete ja"rjestuses //========================================================= public class Element implements java.util.Enumeration { //lisainfo alamklassides Element jargmine; Element() { //konstruktor vaikimisi } public Element votaJargmine() { return jargmine; } public void paneJargmine (Element e) { jargmine = e; } //============================================ // Peame oskama vo~tmeid vo~rrelda //============================================ public Comparable votaVoti() { //KINDLASTI YLE KATTA return (Comparable)this; } public int compareTo (Object voti) { //KINDLASTI YLE KATTA return 1; } //======================================================================== // Standardsed ahela operatsioonid - lisa, eemalda, otsi //======================================================================== 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.votaVoti().compareTo (votaVoti()) < 0) { // e.voti < this.voti e.paneJargmine (this); // lisamine ahela algusesse return e; } Element abi = this; // hakkame kohta otsima abi jarele while (abi.votaJargmine() != null) { if (e.votaVoti().compareTo (abi.votaJargmine().votaVoti()) < 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 (Comparable voti) { //kui ei leia, siis null Element abi = this; while (abi != null) { if (voti.compareTo (abi.votaVoti()) == 0) return abi; abi = abi.votaJargmine(); } return null; //kui leiti varem, siis siia ei satuta } // otsi() lopp //========================================================== // Votmete va"ljastamine //========================================================== public String toString() { StringBuffer puhver = new StringBuffer(); Element abi = this; while (abi != null) { puhver.append (abi.votaVoti().toString()); // voti if (abi.votaJargmine() != null) puhver.append (", "); // vaheeraldaja else puhver.append (";"); // lopueraldaja abi = abi.votaJargmine(); } return puhver.toString(); // puhver -> String } // toString() lopp //====================================================================== // Enumeration //====================================================================== 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 //===================================================================