2016-07-09 7 views
0

Ich weiß, wie man mit zwei StrukturenPassing verknüpfte Liste, die auf eine Funktion von drei Strukturen besteht

Dazu eine verknüpfte Liste erstellen, erkläre ich eine Struktur, die alle notwendigen Daten enthält. Es sieht so aus:

struct Data{ 
    int numb; 
    int date; 
} 

zweite Struktur stellt einen Knoten, der einen Kopf (d.h. erstes Element der Liste) und einen Link zu dem nächsten Knoten hat.

struct llist{ 
    Data d; 
    llist *next; 
} 

Ich frage mich, was ist, wenn ich meine llist auf eine andere Struktur hinzufügen wollte, die eine Liste darstellen würde.

struct mainList{ 
    llist l; 
} 

Ich weiß, dass es einige Schwierigkeiten bereiten kann, da ich nicht ganz sicher bin, wie auf eine Funktion Hauptliste zu übergeben.

Hier habe ich versucht, verkettete Liste

void show(mainlist *ml){ 
    llist *u = ml->l; 
    while(u){ 
     printf("Date: %s\t Name: %s\n", u->d.dat, u->d.uname/* u->d.dat, u->d.uname*/); 
     u=u->next; 
    } 
} 

aber bekam eine Fehlermeldung drucken sagen, dass „ich kann nicht‚llist‘auf‚llist *‘in der Initialisierung‘ Also, ich bin hier ahnungslos. ? Irgendwelche Ideen ..

+0

Was ist der Punkt einer 'Struktur' mit einem Mitglied? –

+0

Nun, ich habe es zu Demonstrationszwecken benutzt. Das Hauptziel bestand darin, zu verstehen, wie Zeiger eingerichtet werden müssen, um Manipulationen mit verknüpften Listen durchführen zu können. Aufgrund der folgenden Antworten habe ich ein besseres Verständnis für dieses Konzept –

Antwort

0

Es gibt viele Fragen sind - jedoch ein Zusammenhang mit dem Fehler, den Sie sich beziehen ist die Zeile:

llist *u = ml->l; /* I guess you mean struct llist *u = ml->l */ 

in show Funktion Hier 0.ist ein struct llist *, aber ml->l ist ein struct llist, aber kein Zeiger darauf. Sie müssen die struct mainList ändern:

struct mainList{ 
    struct llist *l; 
} 

Damit ml->l ist ein struct llist *.

0

Arbeitslösung unten, Ihr Code-Snippet hatte einige Probleme. in den Kommentaren hervorgehoben ...

#include <iostream> 
using namespace std; 

struct Data { 
    int numb; 
    int date; 
}; 

struct llist { 
    Data d; 
    llist *next; 
}; 

struct mainList{ 
    llist *l; /*should be a pointer as you are referencing it as a pointer*/ 
}; 

void show(mainList *ml){ /*should be mainList, your code snippet shows 'mainlist'*/ 
    llist *u = ml->l; 
    while(u){ 
     printf("Date: %d\t Name: %d\n", u->d.date, u->d.numb/* u->d.dat, u->d.uname*/); /*your code snippet was using unavailable members of the struct*/ 
     u=u->next; 
    } 
} 

int main() 
{ 

    mainList ml; 

    show(&ml); 

    return 0; 
}