Kleines Backup-Programm mittels Ringpuffer



  • Hallo zusammen,
    einige hier werden sich sicher an meine letzte Aufgabe erinnern, in der ich eine doppelt verkettete Liste erstellen und ganze Listen vorne bzw. hinten an eine andere Liste hängen wollte.
    Heute geht es darum, ein kleines Backup-"Programm" zu erstellen. Ich möchte Datensätze eintragen, die einfach verkettet sind. Jeder neu eingetragene Datensatz soll auf den vor ihm eingefügten Datensatz zeigen (einfache Verkettung via InsertFront) bis zu einem Maximum von 6 Datensätzen. Am Ende soll eine art Ringpuffer entstehen, wobei der letzte (älteste) Datensatz des Rings immer auf den neusten zeigt !Der Ring wächst bis dahin dynamisch!
    Jeder Datensatz (node) hat ein Alter (0-5, wobei 0 der jüngste und 5 der älteste ist). Wird das Alter von 5 überschritten, soll dieser Node entfernt und die Verkettung dementsprechend angepasst werden. Aber ich glaube Bilder sagen mehr als Worte, also habe ich ein kleines UML-Diagramm dazu auf imgur hochgeladen:
    [https://imgur.com/P29LL5D](Link Adresse)

    An sich ist es nicht schwer, habe aber seit einigen Stunden das Problem, dass ich nicht darauf komme, wie ich dem next-pointer des letzten Nodes in der kette die Adresse des neu erstellten Nodes in dem Ring zuweise. Bisher bin ich nur soweit, dass ich anhand eines Iterators das Ende des Rings finde. Wie ich jetzt die Adresse zuweise weiß ich nicht..

    void Ring::addNode(std::string data, std::string desc) {
    	RingNode* newNode = new RingNode(data, desc);	
    	anker->setNext(newNode);
    
    	if (isEmpty())
    		newNode->setNext(anker->getNext());
    
    	if (!isEmpty())
    		newNode->setNext(anker->getNext());		
    
    	setAnzahlNodes(getAnzahlNodes() + 1);	
    	
    	/*RingNode* iterator = anker->getNext();
    	while (iterator->getNext() != nullptr) {
    		iterator->setNext(iterator->getNext());
    	}
    	iterator->setNext(anker->getNext());*/
    
    
    
    	if (isFull()) {
                  ...
    	}
    
    }
    

    Irgendjemand einen Tipp für mein Brett im Kopf?
    Edit: ignoriert am besten meinen Schwachsinn im Code, dass jeder neu erstellte Node auf sich selber zeigt..

    Danke im Voraus




Anmelden zum Antworten