#include "STALNI.C" int nema_brata(struct proces *pocetak, struct proces *proc); int proc_PPID(struct proces *pocetak, int proc_PID); void DodajUNovuListu(struct proces **novaLista, struct proces *adresa);//deklaracija funkcije DodajUNovuListu struct proces *NovaLista(struct proces *pocetak) { struct proces *p, *novaLista=NULL; p = pocetak; while(p) { if (nema_brata(pocetak, p)) { DodajUNovuListu(&novaLista, p); } p = p->sljedeci; } return novaLista; } void DodajUNovuListu(struct proces **novaLista, struct proces *adresa) { struct proces *t, *prethodni, *novi_proces; //deklaracija varijabli novi_proces = (struct proces *) malloc(sizeof(struct proces)); //alokacija memorije za novi_proces novi_proces->PID = adresa->PID; //izjednacavanje vrijednosti kazaljki novi_proces->UID = adresa->UID; // -||- novi_proces->GID = adresa->GID; // -||- novi_proces->PPID = adresa->PPID; // -||- novi_proces->prioritet = adresa->prioritet; // -||- novi_proces->status = adresa->status; // -||- novi_proces->sljedeci = NULL; //slijednik novog procesa se postavlja na nulu if(*novaLista==NULL) //ako je nova lista prazna { *novaLista=novi_proces; //novaLista poprima adresu varijable novi_proces } else //ako nova lista nije prazna { t=prethodni= *novaLista; //t i prethodni poprimaju vrijednost nove liste while(t) //petlja trazi posljednji element { prethodni=t; t=t->sljedeci; } prethodni->sljedeci=novi_proces; //novi proces postaje slijednik zadnjeg } } void Lista(struct proces **pocetak) //deklaracija funkcije potrebna za izvodenje programa "stalni.c" { } int nema_brata(struct proces *pocetak, struct proces *proc) { struct proces *p = pocetak; while(p) { // ako trenutni element nije zadan element (argumentom), i provjerava li je isti roditelj if(p != proc && proc_PPID(pocetak, p->PID) == proc->PPID) return 0; p = p->sljedeci; } return 1; } // pronadji PPID od proc_PID elementa (vrati roditelja) int proc_PPID(struct proces *pocetak, int proc_PID) { struct proces *p = pocetak; while(p) { if(p->PID == proc_PID) return p->PPID; p = p->sljedeci; } return 0; }