//Lista implementata cu vectori de obiecte, dupa acelasi format ca //cea inlantuita(implementeaza aceeasi interfata - Lista package Liste; import java.io.*; import java.util.*; public class ListaVector implements Lista { private Object[] v; private int nrMax = 0, pozitie = 0; //lista vida, pozitie indica locatia libera public ListaVector(int nmax) { v = new Object[nrMax = nmax]; } public Object primul() { if( esteVida()) { System.out.println("Lista vida."); return new String("nimic"); } else return v[0]; } public Object ultimul() { if( esteVida()) { System.out.println("Lista vida."); return new String("nimic"); } else return v[pozitie-1]; } public boolean esteVida() { return pozitie == 0; } public boolean estePlina() { return pozitie == nrMax; } public void adaugaInceput(Object x) { int i; if(x == null) return; if( estePlina()) System.out.println("Lista plina."); else { for(i = pozitie; i > 0; i--) v[i] = v[i - 1]; v[0] = x; pozitie++; } } public void adaugaSfarsit(Object x) { if(x == null) return; if( estePlina()) System.out.println("Lista vida."); else v[pozitie++] = x; } public void stergePrimul() { if( esteVida()) System.out.println("Lista vida."); else { for(int i = 0; i < pozitie; i++) v[i] = v[i+1]; pozitie--; } } public String toString() { String s; if(esteVida()) s = "ListaVector vida"; else { s = "{"; for(int i = 0; i < pozitie; i++) { s += v[i].toString(); if(i != pozitie-1) s += ", "; } s += "}"; } return s; } public void afisare(String text) { System.out.println(text + this); } public void citireFisier(String numeFis) { 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); } catch(IOException e) { e.printStackTrace(); } } public ListaVector elemNegative() { ListaVector rezultat = new ListaVector(this.nrMax); for(int i = 0; i < pozitie; i++) if( ( (Integer)v[i] ).intValue() < 0 ) rezultat.adaugaSfarsit( (Integer)v[i] ); return rezultat; } public ListaVector elemPozitive() { ListaVector rezultat = new ListaVector(this.nrMax); for(int i = 0; i < pozitie; i++) if( ( (Integer)v[i] ).intValue() > 0 ) rezultat.adaugaSfarsit( (Integer)v[i] ); return rezultat; } public ListaVector concatenare(ListaVector l) { ListaVector rezultat = new ListaVector(this.nrMax + l.nrMax); int i = 0; if( !this.esteVida()) for(i = 0; i < this.pozitie; i++) rezultat.adaugaSfarsit((Integer)this.v[i]); if( !l.esteVida()) for(i = 0; i < l.pozitie; i++) rezultat.adaugaSfarsit((Integer)l.v[i]); return rezultat; } }