All pastes #821164 Raw Edit

imhotep

public text v1 · immutable
·published 2007-12-17 23:17 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.");
	}
	return value;
    }

    public String toString() {

	StringBuffer str=new StringBuffer();
	ListNode foo=head.next;

	System.out.println(head.getData());
	    
	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;
	    }
	}
	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(9);
		ring.herausnehmen();
	    ring.herausnehmen();
	    System.out.println(ring.toString());
	    ring.einfuegen(2);
	    ring.einfuegen(19);
	    ring.einfuegen(29);
	    ring.einfuegen(39);
	    ring.einfuegen(49);
	    
	     System.out.println(ring.toString());
	    
	    
    }
}