Struct, Rekursive Listen ansteuern
-
// Array mit 20 Jobs vom Typ job_list
Das glaube ich nicht. Du machst einen Typ und kein Array.
Abgesehen davon wird's laufen, wenn man die Syntax-Fehler rausnimmt.
-
auch müßtest du von 0 bis 18 gehen also
for(i=0;i<18;i++){ ... } job_list[i].next = NULL; statt for(i=1;i<19;i++ {
zusammen finden wir die fehler schon
-
Ich habe mal die gröbsten Dinger weggemacht, dass man mal übersetzen kann:
#include <stdlib.h> #include <stdio.h> struct job_tag{ int process; int capacity; struct job_tag *next; } job_list[20]; int main(void) { // die jobs mit Zeiten füllen for(int i=0; i<20; i++){ job_list[i].process=rand(); job_list[i].capacity=rand(); } // und jetzt das problem: zeiger setzen!!! for(int i=0;i<19;i++) { job_list[i].next=&job_list[i+1]; } job_list[19].next = 0; return 0; }
Und das Schlüsselwort heißt "Verkettete Liste".
- mach Dich außerdem mal mit Arrays/Indizierung vertraut.
- rand() sollte man mal mit srand ( time(NULL) ) initialisieren
- mit typedef kannst Du keine Variable deklarieren
-
ach quatsch...
for(i=0;i<19;i++){
-
haha ihr seidn traum! danke!
naja und das mit den rekursiven listen, da wollte ich wohl maln professionellen ausdruck benutzen, hab aber rekursive strukturen gemeint:)
das mit dem rand war nur ne andeutung, benutz ich so nich...
probiers gleich mal aus.
danke nochmal
änz
-
noobLolo schrieb:
ach quatsch...
for(i=0;i<19;i++)
19 stimmt doch nicht (oder das < muss ein <= sein). mach doch besser: *for(i=0; i<sizeof(job_list)/sizeof(job_list); i++)
-
;fricky schrieb:
noobLolo schrieb:
ach quatsch...
for(i=0;i<19;i++)
19 stimmt doch nicht (oder das < muss ein <= sein). mach doch besser: *for(i=0; i<sizeof(job_list)/sizeof(job_list); i++)
Hast Du bemerkt, dass in der besagten Schleife job_list[i+1] verwendet wird?
-
uUuuUu schrieb:
Hast Du bemerkt, dass in der besagten Schleife job_list[i+1] verwendet wird?
nö, sorry. aber hardcodierte zahlenwerte im code sind trotzdem oft nicht toll. ändert er die grösse des arrays, muss er alles anpassen. dann schon lieber ein gepflegtes #define, oder so.
-
;fricky schrieb:
dann schon lieber ein gepflegtes #define, oder so.
hab mal sowas vorbereitet
;fricky schrieb:
#define LENGTH(arr) (sizeof(arr)/sizeof(*arr)) for(i=0; i < LENGTH(job_list); i++)
fein fein
und für den konkreten fall
for(i=0; i < LENGTH(job_list)-1; i++)
hui und ab c99 kann man dann auch
#define EACH(arr,i)\ for(int i=0; i < LENGTH(arr); i++)
machen oder?
-
noobLolo schrieb:
hui und ab c99 kann man dann auch
#define EACH(arr,i)\ for(int i=0; i < LENGTH(arr); i++)
machen oder?
Die Variablendeklaration im Kopf der for-Schleife ja, das Makro so wie es da steht besser nicht.
MfG,
Probe-Nutzer