Home Nach oben Link Job Maschine Maschine_seq Maschinengroup Process Simulation Statistic_List Werkhalle File Read Report
| |
/** Link.java, Timm Grams, Fulda, Februar 2000
Die Klasse "Link" ist Basisklasse fuer einfach verkettete Datenstrukturen
(lineare und zyklische Listen, Baeume in Parent-Darstellung).
Die Methode "less" definiert eine abstrakte partielle Ordnung.
Autor: Timm Grams, Fulda
Erstellung: Februar 2000
Letzte Aenderung: 16.03.00
geaendert: 15.12.2001- Dirk Schmitt. Erweiterung der Klasse Link zur NamedLink
so daß nun jedes Linkobjekt eine eindeutige id besitzt.
neue Methoden: get_id() und erweiterter Konstruktor
****************************************************************************/
package SingleLink;
public class NamedLink {
int ref; //Anzahl der nx-Referenzen auf das Link-Objekt
int id;
NamedLink nx;
public int get_id() {
return this.id;
}
public NamedLink(){ref=0; nx=null;}
public NamedLink(int id){ref=0; this.id=id; nx=null;}
public void in(NamedLink p) {
if(p.nx==null){p.nx=nx; nx=p; p.ref++;
}else throw new Error("NamedLink:
NamedLink.in(p) failed");
}
public void add(NamedLink p) {
if (p==null); //geaendert: 16.03.00
else if (nx!=null) nx.add(p); else {nx=p; p.ref++;}
}
public NamedLink out() { //geaendert: 16.03.00
NamedLink p=nx;
if (p!=null) {nx=p.nx; p.ref--; p.nx=null;}
return p;
}
public NamedLink bisect(){
NamedLink p=nx;
if (p!=null){nx=null; p.ref--;}
return p;
}
public NamedLink next() {return nx;}
public int nref() {return ref;}
//Partielle Ordnung
public boolean less(NamedLink p){return false;};
//p wird in die Liste mit dem Kopf this unter Erhaltung der partiellen
Ordnung
//eingefuegt. Das Element p wird - falls ein solches existiert - vor dem ersten
//groesseren Element platziert, ansonsten am Ende der Liste.
public void fitIn(NamedLink p){
NamedLink cur=this;
while (cur.nx!=null) {if (p.less(cur.nx)) break; cur=cur.nx;}
cur.in(p);
}
public boolean contains(NamedLink p) {
NamedLink cur=this; //Aenderung am 16.03.00
while (cur!=null&&cur!=p) cur=cur.nx;
return cur==p;
}
public boolean empty() {return nx==null;}
public void clear() {bisect();}
public int cardinal() {
int i=0;
NamedLink cur=nx;
while (cur!=null) {cur=cur.nx; i++;}
return i;
}
}
|