All pastes #31450 Raw Edit

Someone

public text v1 · immutable
#31450 ·published 2005-11-27 22:00 UTC
rendered paste body
#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;
}