Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Verkettete Liste2

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.10.2004, 22:45 Uhr
infoman



Hallo kan mir jemand die Fragen unter Komentaren beantowrten?
Klasse soll eine Verkettet Liste darstellen die Koordinaten x und y in kette abspeichert.

Erste Unit
*******

C++:
//---------------------------------------------------------------------------
#ifndef KoordunitH
#define KoordunitH
//---------------------------------------------------------------------------
class CKoord
{
private:
double x;
double y;
public:
CKoord(void);
CKoord(double xWert,double yWert);
void set(double xWert,double yWert);
void setX(double xWert);
void setY(double yWert);
int getX(void);
int getY(void);
//wiso nicht auch double getXY(double xWert,double YWert);
};

#endif



Zweite Unit
*********

C++:
#ifndef ChainlistunitH
#define ChainlistunitH
include "Koordunit.h"
typedef class CKoord CData //Kann Man nicht direkt CKoord nutzen
//---------------------------------------------------------------------------
class CChainList
{
private:
CChainList *next;
CChainList *prev;
CData *data;
public:
CData (CData *d=NULL);
CChainList(CChainlist *p,CData *d = NULL);// Warum kein *n wie next sondern *p preview
~CChainList(void);
CChainList getPrev();//heh wiso DatenTyp CChainList und kein double  oder so
CChainList getNext();
CChainList getFirst();
CChainList getLast();
CChainList getData();
CData*  getData(void);
void    setData(CData* d);
void    exchange(CChainList* le);  // Wofür ist das hier
};
#endif
//Wo ist Set prev Next usw?




Bearbeitung von Windalf:

Bitte cpp-tags verwenden...


Dieser Post wurde am 01.10.2004 um 23:25 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.10.2004, 23:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


//wiso nicht auch double getXY(double xWert,double YWert);
kannst du ja selber schreiben ...
dann muss es allerdings void getXY(double &xWert, double &YWert); heissen sonst kommst du nicht weit

//Kann Man nicht direkt CKoord nutzen
ja

// Warum kein *n wie next sondern *p preview
ist halt ne einfach verkette liste und geschmacksache... ist halt wie deine erste frage... es wurde einfach so definiert man hätte es auch anders machen können...

//heh wiso DatenTyp CChainList und kein double oder so
jedes element der liste ist selber ein CChainList... deshalb... auf die elemente kannst du dann zugreifen über das member CData von CChainList


// Wofür ist das hier
keine ahnung ich kenn die implementierung dazu nicht aber ich würde vermuten das das aktuelle element mit dem übergeben ausgetauscht werden soll...


//Wo ist Set prev Next usw?
das sind lediglich header in denen deklariert wurde... die definition/implementation muss an ner anderen stelle stehen die du hier nicht gepostet hast...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.10.2004, 23:57 Uhr
infoman



Hallo
ich werde es versuchen zu verstehen.
Vielen dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.10.2004, 00:14 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hab das als postmessage bekommen stell das mal hier zur allgemeinen diskussion rein


Zitat:

Hallo
ich habe eine woche zeit diese verkettete Liste zu verstehen. kannst Du mir bitte vieleicht tips geben wie ich das Am schnellsten verstehen kann. Es kommt bald einer Note da raus. Gruss




C++:

//---------------------------------------------------------------------------
#ifndef KoordunitH
#define KoordunitH

//---------------------------------------------------------------------------
class CKoord
{
private:
double x;
double y;
public:
CKoord(void);
CKoord(double xVal, double yVal);
void set(double xVal, double yVal);
void setX(double xVal);
void setY(double yVal);
double getX(void);
double getY(void);
};


#endif
_________________________________

//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop

#include "Koordunit.h"
//---------------------------------------------------------------------------

CKoord::CKoord(void) : x(0), y(0)
{
}

CKoord::CKoord(double xVal, double yVal) : x(xVal), y(yVal)
{
}

void CKoord::set(double xVal, double yVal)
{
if(this)
{
x = xVal;
y = yVal;
}
}

void CKoord::setX(double xVal)
{
if(this)
{
x = xVal;
}
}

void CKoord::setY(double yVal)
{
if(this)
{
y = yVal;
}
}

double CKoord::getX(void)
{
if(this) return(x);
return(0);
}

double CKoord::getY(void)
{
if(this) return(y);
return(0);
}
______________________________________

//---------------------------------------------------------------------------
#ifndef ChainlistunitH
#define ChainlistunitH
#include "Koordunit.h"

typedef class CKoord CData;

class CChainList
{
private:
CChainList* next;
CChainList* prev;
CData* data;
public:
CChainList(CData* d = NULL);
CChainList(CChainList* p, CData* d = NULL);
~CChainList(void);
CChainList* getNext(void);
CChainList* getPrev(void);
CChainList* getFirst(void);
CChainList* getLast(void);
CData* getData(void);
void setData(CData* d);
void exchange(CChainList* le);
};
#endif

______________________________________

//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "Chainlistunit.h"

//---------------------------------------------------------------------------
CChainList::CChainList(CData* d) : next(NULL), prev(NULL), data(d)
{
}

CChainList::CChainList(CChainList* p, CData* d) : prev(p), data(d)
{
if(this->prev) // Habe ich einen Vorgänger?
{ // Ja, ich habe einen Vorgänger:
this->next = this->prev->next; // Mein Nachfolger ist der Nachfolger von meinem Vorgänger
this->prev->next = this; // Von meinem Vorgänger der Nachfolger bin ich
if(this->next) // Habe ich einen Nachfolger?
{ // Ja, ich habe einen Nachfolger:
this->next->prev = this; // von meinem Nachfolger der Vorgänger bin ich
}
}
else // Nein, ich habe keinen Vorgänger
{
this->next = NULL; // Dann habe ich auch keinen Nachfolger
}
}

CChainList::~CChainList(void)
{
if(this->prev) // Wenn ich einen Vorgänger habe
{
this->prev->next = this->next; // dann ist der Nachfolger von meinem Vorgänger mein Nachfolger
}
if(this->next) // Wenn ich einen Nachfolger habe
{
this->next->prev = this->prev; // dann ist der Vorgänger meines Nachfolgers mein Vorgänger
}
delete data; // lösche Daten
}

CChainList* CChainList::getNext(void)
{
if(this) return(next);
return(NULL);
}

CChainList* CChainList::getPrev(void)
{
if(this) return(prev);
return(NULL);
}

CChainList* CChainList::getFirst(void)
{
if(this)
{
CChainList *first = this;
while(first->prev)
{
first = first->prev;
}
return(first);
}
return(NULL);
}

CChainList* CChainList::getLast(void)
{
if(this)
{
CChainList *last = this;
while(last->next)
{
last = last->next;
}
return(last);
}
return(NULL);
}

CData* CChainList::getData(void)
{
if(this) return(data);
return(NULL);
}

void CChainList::setData(CData* d)
{
if(this) data = d;
}

void CChainList::exchange(CChainList* le)
{
if(this && le)
{
CData* temp = le->data;
le->data = this->data;
this->data = temp;
}
}



öhm werd mal bitte genauer was du nicht versehst... an sonsten stell dir das einfach so vor das ein element der liste einfach aus daten selber (in dem fall die doublewerte) und einem zeiger auf ein listenelement besteht...

wenn du ne liste neu erstellst nimmst du einfach ein listenelement, füllst das mit den daten ,also in dem fall die doublewerte... und lässt den zeiger aufs nächste element (oder den aufs vorherige) auf 0 zeigen (was dann in dem fall heisst es kommt kein element mehr)...

wenn du jetzt ein element anhägen willst lässt du einfach den zeiger des alten elementes auf das neue zeigen usw... so erstellst du dir eine liste... mehr ist nicth dabei...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.10.2004, 00:27 Uhr
infoman



Danke ich glaube ich fange an zu verstehen. Kan mir jeder der tips hat weiter unten schreiben, dann kombiniere ich die tips und ziehe Schlüssel da raus.
Gruss

Dieser Post wurde am 02.10.2004 um 00:31 Uhr von infoman editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: