Doppelte verkettete Liste in C++

Javun

Grünschnabel
Hallo,

ich habe folgendes Problem. Wir sollen eine Klasse für die Knoten einer doppelt verketteten Liste erstellen, die nicht gegeben ist. Welche Funktionien diese Klasse haben soll könnt ihr dem von mir erstellten Skelett entnehmen. Leider habe ich überhaupt keine Ahnung von verketteten Listen bzw. deren Knoten und auch im Internet habe ich leider nichts ausreichend verständliches gefunden, daher weiß ich nicht einmal wie ich Anfangen soll...

Die Lösung müsste eigentlich recht simpel sein. Nur komm ich irgendwie überhaupt nicht drauf. Ich hoffe ihr könnt mir da weiter helfen.

Vielen Dank schon Mal an Alle.

Code:
#include "EntryNode.h"
#include <iostream>

using namespace std;

 void setNextEntry(EntryNode *nextEntry){ // Den nächsten Entry setzen
 
 }
 void setPrevEntry(EntryNode *prevEntry){ // Den vorherigen Entry setzen
 
 }
 void setDate(unsigned int newDate){ // Datum für den Entry setzen
	date = newDate;
 }
 void setAmount(float newAmount){ // Betrag für den Entry setzen
	amount = newAmount;
 }
 EntryNode *getNextEntry(){
 
 }
 EntryNode *getPrevEntry(){
 
 }
 float getAmount(){ // Soll den Betrag vom Entry zurückliefern
	return amount;
 }
 unsigned int getDate(){ // Soll das Datum vom Entry zurückliefern
	return date;
 }
 
Zuletzt bearbeitet:
Willkommen im Forum!

einer doppelt verketteten Liste erstellen, die nicht gegeben ist
Wie meinst du das? Jeder Knoten besteht aus einem float amount und einem int date, oder?

Wie wärs damit
C++:
class EntryNode
{
protected:
    EntryNode *prev;
    EntryNode *next;
    float amount;
    int date;
public:
    EntryNode()
    {
        prev=NULL;next=NULL;
    }
    //Hier deine Funktionen rein
};

Get/Set Amount/Date sind ja eigentlich schon fertig
Und die anderen 4 Funktionen (eigentlich jetzt ja Methoden) machen das gleiche für next und prev.
Den Wert setzen bzw. zurückgeben.
Das wars.

Gruß

PS: Falls ihr schon was von Copykonstruktoren und Operatorüberladung gehört habt, pack das auch noch dazu:
C++:
EntryNode(EntryNode &a)
{
    prev=a.prev;next=a.next;
    amount=a.amount;date=a.date;
}

EntryNode &operator=(EntryNode &a)
{
    prev=a.prev;next=a.next;
    amount=a.amount;date=a.date;
    return *this;
}
 
Also ich habs jetzt so gemacht...

EntryNode.cpp
C++:
#include "EntryNode.h"
#include <iostream>

using namespace std;

EntryNode::EntryNode(){
	prev = NULL;
	next = NULL;
 }
 void EntryNode::setNextEntry(EntryNode *nextEntry){ // Den nächsten Entry setzen
	next = nextEntry;
 }
 void EntryNode::setPrevEntry(EntryNode *prevEntry){ // Den vorherigen Entry setzen
	prev = prevEntry;
 }
 void EntryNode::setDate(unsigned int newDate){ // Datum für den Entry setzen
	date = newDate;
 }
 void EntryNode::setAmount(float newAmount){ // Betrag für den Entry setzen
	amount = newAmount;
 }
 EntryNode *getNextEntry(){
	return next;
 }
 EntryNode *getPrevEntry(){
	return prev;
 }
 float EntryNode::getAmount(){ // Soll den Betrag vom Entry zurückliefern
	return amount;
 }
 unsigned int EntryNode::getDate(){ // Soll das Datum vom Entry zurückliefern
	return date;
 }

EntryNode.h
C++:
class EntryNode
{
private:
	EntryNode *prev;
    EntryNode *next;
    int amount;
    int date;
	
public:
	void setNextEntry(EntryNode *nextEntry);
	void setPrevEntry(EntryNode *prevEntry);
	void setDate(unsigned int newDate);
	void setAmount(float newAmount);
	EntryNode *getNextEntry();
	EntryNode *getPrevEntry();
	float getAmount();
	unsigned int getDate();
}
 
Zuletzt bearbeitet von einem Moderator:
Schaut ja ganz schön aus, bitte noch ein Klick auf erledigt

Und bei date solltest du dich vielleicht entscheiden, ob es jetzt ein int oder ein unsigned int ist.

Gruß
 
Zurück