/** * Fail Eltest.java * @author Jaanus Poial * @version 0.3 kevad 99 * @since JDK 1.2 */ import java.lang.Comparable; //==================================================================== // Na"ide ahelatest. // Lihtahela klass vo~rreldavate vo~tmete ja"rjestuses //==================================================================== 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 //================================================================= // Element alamklass, milles vo~tmeks on String nimi //================================================================= class Nelement extends Element { String nimi; Nelement() { } Nelement (String s) { nimi = s; } public Comparable votaVoti() { return nimi; } public int compareTo (Object voti) { return votaVoti().compareTo (((Nelement)voti).votaVoti()); } } // Nelement lopp //================================================================= // Pohiprogramm //================================================================= public class Eltest { static public void main (String[] argumendid) { // kommentaarid kirjeldavad soovitud va"ljundit // kui lisamine on u"mber tehtud pistemeetodi peale System.out.println ("Algus"); // Algus Nelement minuAhel = null; System.out.println (minuAhel); // null minuAhel = new Nelement ("e1"); System.out.println (minuAhel); // e1; minuAhel = (Nelement)minuAhel.lisa (null); System.out.println (minuAhel); // e1; minuAhel = (Nelement)minuAhel.lisa (new Nelement ("e0")); System.out.println (minuAhel); // e0, e1; minuAhel = (Nelement)minuAhel.lisa (new Nelement ("e3")); System.out.println (minuAhel); // e0, e1, e3; minuAhel = (Nelement)minuAhel.lisa (new Nelement ("e2")); System.out.println (minuAhel); // e0, e1, e2, e3; minuAhel = (Nelement)minuAhel.eemalda (minuAhel.otsi ("e4")); System.out.println (minuAhel); // e0, e1, e2, e3; minuAhel = (Nelement)minuAhel.eemalda (minuAhel.otsi ("e0")); System.out.println (minuAhel); // e1, e2, e3; minuAhel = (Nelement)minuAhel.eemalda (minuAhel.otsi ("e2")); System.out.println (minuAhel); // e1, e3; minuAhel = (Nelement)minuAhel.eemalda (minuAhel.otsi ("e3")); System.out.println (minuAhel); // e1; minuAhel = (Nelement)minuAhel.eemalda (minuAhel.otsi ("e1")); System.out.println (minuAhel); // null System.out.println ("Lopp"); // Lopp } // main() lopp } // Eltest lopp //=========================================================== // faili lopp //===========================================================