Problem mti Verketteter Liste
-
Also das programm wertet mehrere accounting files aus.
(d.h. es holt User/Gruppe Verb. CPU-,Wall-time und die Anzahl der Jobs heraus)
Die Daten speichere ich in einer Verketteten Liste.Funktioniert soweit auch ganz gut, nur das die Anzahl der Jobs nicht stimmt. In den files stehen die beendeten Jobs, so das ich jedesmal wenn ich einen Job eines bereits erfassten Users finde, die Job Anzahl erhöhe.
Wenn ich mir das Schritt für Schritt für einen User ausgeben lasse komme ich auf z.B. 109 jobs bei der Endausgabe steht da jedoch auf einmal 1 Job!Hier werden die Daten abgespeichert:
if(anfang!=NULL) //Existiert bereits ein Element? { zeiger=anfang; if(anfang->next!=0) //Existiert bereits ein 2tes Element? { while(zeiger!=NULL && !abort) //Solange es n+1 Elemente gibt { if(strstr(zeiger->user,tmp_user)!=0) //Überprüfe ob es den User schon gibt { zeiger->job_am++; // zeiger->cpu_time+=(cput); //Wenn ja trage Daten ein zeiger->wall_time+=(wallt); // abort=1; //und setze "nicht neu" marker if(strstr(tmp_user,"alef")!=0) { printf("%s\n",zeile); printf("%d\n",zeiger->job_am); //Hier gibt er mir z.B. 109 Jobs fuer den user alef an test(""); } } zeiger=zeiger->next; //lade nächstes Element } }else { if(strstr(zeiger->user,tmp_user)!=0) //Gibt es den User bereits? { zeiger->job_am++; // zeiger->cpu_time+=cput; //Wenn ja trage Daten ein zeiger->wall_time+=wallt; // abort=1; //und setze "nicht neu" marker } } } if(!abort) //marker nicht gesetzt? { //Lege neuen Eintrag an extend_sorted(tmp_user,tmp_group,cput,wallt,1,0,0); // } abort=0; i=0;
Hier findet die Ausgabe statt:
if(para.user==1) { if(anfang!=NULL) { zeiger=anfang; while(zeiger!=NULL) { printf("%s %s Jobs: %d Verb.CPU-Zeit: %d\n",zeiger->user,zeiger->group,zeiger->job_am,zeiger->cpu_time); //Hier ist es dann nur noch 1 Job zeiger=zeiger->next; } }
Also ich zerbrech mir darüber jetzt schon 2 Tage den Kopf und seh den Fehler einfach nicht. bitte um Hilfe
Gruß HiFish