Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Collections;
- namespace GenericDatatypeRingbuffer
- {
- class Ringpuffer<T> : IEnumerable where T : class
- {
- private Element erster, letzter, current;
- private int numberofelements;
- public class Element
- {
- internal T data;
- internal Element next;
- internal Element() { }
- internal Element(T newdata)
- {
- data = newdata;
- next = null;
- }
- }
- public Ringpuffer(int anz)
- {
- numberofelements = anz;
- for (int i = 0; i < anz; i++)
- {
- Element neu = new Element();
- if (erster == null)
- { erster = neu; letzter = neu; }
- else
- {
- letzter.next = neu;
- letzter = neu;
- }
- }
- letzter.next = erster;
- current = erster;
- }
- public void EnQueue(T newdata, int steps)
- {
- bool placehere = false;
- int moved = 0;
- while (!placehere || current.data != default(T))
- {
- if (moved > numberofelements)
- throw new InsufficientMemoryException();
- current = current.next;
- if (moved == steps - 1)
- placehere = true;
- moved++;
- }
- current.data = newdata;
- Console.WriteLine("{0} @ {1}", newdata, steps);
- }
- public T DeQueue()
- {
- T returncache = current.data;
- current.data = default(T);
- current = current.next;
- return returncache;
- }
- public IEnumerator GetEnumerator()
- {
- for (int i = 0; i < numberofelements; i++)
- {
- if (erster.data != default(T))
- yield return erster.data;
- erster = erster.next;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Ringpuffer<string> DasDing = new Ringpuffer<string>(5);
- DasDing.EnQueue("Anna", 3);
- DasDing.EnQueue("lala", 2);
- DasDing.EnQueue("lulu", 2);
- DasDing.EnQueue("mudda", 2);
- DasDing.EnQueue("vadda", 2);
- //DasDing.EnQueue("zuvieldesguten", 2);
- Console.WriteLine();
- foreach (string E in DasDing)
- {
- Console.WriteLine(E);
- }
- Console.WriteLine();
- Console.WriteLine("Wurde entfernt: " + DasDing.DeQueue());
- Console.WriteLine();
- foreach (string E in DasDing)
- {
- Console.WriteLine(E);
- }
- Console.WriteLine();
- Console.Read();
- }
- }
- }
Add Comment
Please, Sign In to add comment