www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - Liste als Klasse
Liste als Klasse < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Liste als Klasse: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:35 Sa 23.01.2010
Autor: nana

Hallo, folgendes Programm hatten wir in der Vorlesung; ich versteh es auch eig , hab aber ein paar Fragen zu den Funktionen...hoffe ihr könnt mir helfen

hier erstmal die Def der Klasse CList (nur weil man sonst die funktionsparameter nicht so ganz versteht):

class CList {
private:
struct CListElement {
   int digit;
   CListElement* next;
   CListElement(int d, CListElement* n) {
       digit = d; next = n;}
};
/* doch eine Frage: eig ist CListElement doch ein struct, aber hier ist ein Konstruktor drin, oder gibt es die auch in structs??*/
CListElement* head;
};

CList(){ head =NULL;};
// falls liste erst neu erstellt werden muss
void CList::cinsertTop (int r) {
head = new CListElement(r,head);
}
/*Das verstehe ich nicht so ganz: also das neue El, das oben eingefügt werden soll hat den wert r und der zeiger ist head, das ist klar, aber head ist doch eigentlich der zeiger der liste der immer auf das erste el zeigen soll, aber head wurde ja gar nicht verändert (muss head dann nicht auch als referenzparameter üebrgeben werden)??  */

Zum Finden eines El:

bool CList::cfind ( int r) {
if (head == NULL){
return false;
}
else {
/*l wird zum Durchlauf
verwendet*/
CListElement* l = head;
while ((l != NULL) &&(l->digit != r)) {
l = l->next;
};
return (l != NULL);
}
}
/*ich versteh dieses programm bis auf den schluss: was bedeutet "return (l!= NULL)" in diesem Zusammenhang??  */

Vielen Dank für alle Antworten,
lg, nana

        
Bezug
Liste als Klasse: Antwort
Status: (Antwort) fertig Status 
Datum: 15:35 Sa 23.01.2010
Autor: Karl_Pech

Hallo nochmal nana,


> class CList {
>  private:
>   struct CListElement {
>     int digit;
>     CListElement* next;
>     CListElement(int d, CListElement* n) {
>         digit = d; next = n;}
>   };
>  /* doch eine Frage: eig ist CListElement doch ein struct,
> aber hier ist ein Konstruktor drin, oder gibt es die auch
> in structs??*/


Das war jetzt auch für mich neu. Aber offenbar haben structs in C++ im Vergleich zu C eine etwas andere Bedeutung: [][guckstduhier].


>  void CList::cinsertTop (int r) {
>  head = new CListElement(r,head);
>  }
>  /*Das verstehe ich nicht so ganz: also das neue El, das
> oben eingefügt werden soll hat den wert r und der zeiger
> ist head, das ist klar, aber head ist doch eigentlich der
> zeiger der liste der immer auf das erste el zeigen soll,
> aber head wurde ja gar nicht verändert (muss head dann
> nicht auch als referenzparameter üebrgeben werden)??  */


Mir ist die Frage nicht ganz klar, weil 'head' doch als Parameter übergeben wird. Am Anfang ist head == NULL. Jetzt rufen wir mal cinsertTop(0) auf. Dann wird auf dem Heap ein neues Objekt vom Typ 'CListElement' erstellt. Bei der Erstellung werden an den Konstruktor dieses Objektes 0 und NULL übergeben: new CListElement(r,head). Im Konstruktor-Rumpf werden die internen Variablen digit und next dieses neuen Objektes/Listenelementes gesetzt. Danach springt das Programm zurück zu cInsertTop. Das fertig erstelle Listenelement wird nun der internen Variablen head zugewiesen. Das Ergebnis sieht so aus:


head -> |0|.next == NULL


Beim nochmaligen Aufruf von cinsertTop() wird nun der neue Wert von head an den Konstruktor CListElement für ein neues Listenelement übergeben:


head -> |1|.next -> |0|.next == NULL


>  return (l != NULL);
>  /*ich versteh dieses programm bis auf den schluss: was
> bedeutet "return (l!= NULL)" in diesem Zusammenhang??  */


Ist l ungleich NULL, d.h. wurde das Element gefunden, ergibt der Ausdruck (l != NULL) den Wert 'true'. Ansonsten ist der Ausdruck 'false'. Bei if-Abfragen benutzt du ja auch ständig solche Klammerausdrücke: if(l != NULL); Warum also nicht auch return(l != NULL)? ;-)



Viele Grüße
Karl




Bezug
                
Bezug
Liste als Klasse: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:10 Mi 03.02.2010
Autor: nana

Hey vielen Dank!!
(zum wiederholten Mal ;) )
für die Hilfe, habs jetzt verstanden, obwohl ich zugeben muss dass ich noch ein paar kleine verständnisprobleme hab bzgl benutzung von referenzparametern bei einer klasse list oder so ....
Aber auf jeden Fall danke...
Lg, nana

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de