/* Tomas George Bogdan * Problema 1 - TDA Lista */ package Liste; import java.io.*; import java.util.*; public class ListaInlantuita implements Lista { protected Element start = null; public Object primul() { return start == null ? null : start.info(); } public boolean esteVida() { return start == null; } public boolean estePlina() { return false; } public void adaugaInceput(Object x) { if(x == null) return; if( !estePlina()) start = new Element(x, start); } /*metoda recursiva care parcurge lista si returneaza adresa *ultimului element. Necesara pentru metoda adaugaSfarsit */ public Element ultimul(Element p) { if(p == null || p.urmator() == null) return p; else return ultimul(p.urmator()); } public void adaugaSfarsit(Object x) { if(x == null) return; if( esteVida()) { this.adaugaInceput(x); return; } if( !estePlina()) (ultimul(start)).urm = new Element(x, null); } public void stergePrimul() { if( !esteVida()) start = start.urmator(); } public String toString() { String sir; if( esteVida()) sir = " ListaInlantuita vida"; else { sir = "{"; for(Element p = start; p != null; p = p.urmator()) { sir += "" + p; if(p.urmator() != null) sir += ", "; } sir += "}"; } return sir; } public void afisare(String text) { System.out.println(text + this); } public void citireFisier(String numeFis) throws IOException { String text; try { BufferedReader bf = new BufferedReader( new FileReader(numeFis)); while( (text = bf.readLine()) != null) { StringTokenizer st = new StringTokenizer(text," \n\r\t"); while(st.hasMoreTokens()) this.adaugaInceput(new Integer(st.nextToken())); } }catch(FileNotFoundException s) { System.out.println("Eroare la deschiderea fisierului " + numeFis); } } public ListaInlantuita elemNegative() { ListaInlantuita rezultat = new ListaInlantuita(); for(Element p = start; p != null; p = p.urmator()) if( ( (Integer)p.info() ).intValue() < 0 ) rezultat.adaugaSfarsit( (Integer)p.info() ); return rezultat; } public ListaInlantuita elemPozitive() { ListaInlantuita rezultat = new ListaInlantuita(); for(Element p = start; p != null; p = p.urmator()) if( ( (Integer)p.info() ).intValue() > 0 ) rezultat.adaugaSfarsit( (Integer)p.info() ); return rezultat; } public ListaInlantuita concatenare(ListaInlantuita l) { ListaInlantuita rezultat = new ListaInlantuita(); if( !this.esteVida()) for(Element p = start; p != null; p = p.urmator()) rezultat.adaugaSfarsit((Integer)p.info()); if( !l.esteVida()) for(Element p = l.start; p != null; p = p.urmator()) rezultat.adaugaSfarsit((Integer)p.info()); return rezultat; } }