All pastes #821191 Raw Edit

fifo2

public java v1 · immutable
·published 2007-12-17 23:35 UTC
rendered paste body
public class FIFORingpuffer implements FIFOSchlange {    protected static class ListNode {	public int data;	public ListNode next;	public int getData() {	    return data;	}		ListNode() {	    data=0;	    next=null;	}	ListNode (int a){	    data=a;	}    }            ListNode head=new ListNode();    ListNode tail=new ListNode();    int[] elements;       int counter;    public FIFORingpuffer(int n) {	elements=new int[n];	counter=0;	head.next=null;	tail.next=null;    }    public boolean einfuegen(int zahl) {	ListNode implement_me=new ListNode(zahl);	ListNode old_element=new ListNode();	boolean implemented=false;	if(counter==elements.length) {	    System.out.println("Es kann kein weiteres Element gespeichert werden. Puffer voll!");	}	else {	    if(head.next!=null) {				old_element=head.next;		while(old_element.next!=null) {		    old_element=old_element.next;		}				if(counter==elements.length-2) {		implement_me.next=head.next;		old_element.next=implement_me;		head=implement_me;		elements[counter]=implement_me.getData();		counter++;		tail.next=implement_me;		implemented=true;		    		}		else {		    implement_me.next=null;		    old_element.next=implement_me;		    elements[counter]=implement_me.getData();		    counter++;		    tail.next=implement_me;		    implemented=true;					}	    }	    else {		implement_me.next=null;		head.next=implement_me;		elements[counter]=implement_me.getData();		counter++;		tail.next=implement_me;		implemented=true;	    }	}	return implemented;	        }    public int herausnehmen() {	ListNode kill_me=new ListNode();	int value=0;	if (head.next!=null) {	    kill_me=head.next;	    head.next=kill_me.next;	    elements[counter]=0;	    counter--;	    value=kill_me.getData();	    System.out.println("folgendes Element geloescht: "+value);	}	else {	    value=-1;	    System.out.println("Kein Element geloescht, da Liste leer.");	}		if (value==0) {		counter=0;	}		return value;    }    public String toString() {	StringBuffer str=new StringBuffer();	ListNode foo=head.next;	if(head.next!=null) {	   	    str.append("Schlange vom Typ Ringpuffer mit der Kapazitaet "+counter+" Elemente:");	   	   	    while(foo.next!=null) {	       	str.append(" "+foo.getData());		foo=foo.next;	    }	    str.append(" "+foo.getData());	}	else {	    str.append("Die angegebene Schlange vom Typ Ringpuffer mit der Kapazitaet "+counter+" ist leer.");	}	String ret=""+str;	return ret;    }    public int[] eintraege() {	int laenge=counter;	int[] new_elements=new int[laenge];		for(int i=0;i<laenge;i++) {		new_elements[i]=this.herausnehmen();		this.einfuegen(new_elements[i]);	}	return new_elements;    }    public static void main(String[]args) {	FIFORingpuffer ring=new FIFORingpuffer(10);	    		    	    ring.einfuegen(2);	    ring.einfuegen(19);	    ring.einfuegen(29);	    ring.einfuegen(39);	    ring.einfuegen(49);	    	    System.out.println(ring.toString());	    	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    	    System.out.println(ring.toString());	    	    ring.einfuegen(1);	    ring.einfuegen(2);	    ring.einfuegen(3);	    ring.einfuegen(4);	    ring.einfuegen(5);	    ring.einfuegen(6);	    ring.einfuegen(7);	    ring.einfuegen(8);	    ring.einfuegen(9);	    ring.einfuegen(10);	    	    	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    ring.herausnehmen();	    	     ring.einfuegen(7);	    ring.einfuegen(8);	    ring.einfuegen(9);	    ring.einfuegen(10);	    	    	    	    	    	    	    	   	    	    	        }}