int Red:odajURed(int element);
int Red::SkiniIzReda(int *element)
Napomena : Razred Red nema copy konstruktor
Potrebno je napisati fju čiji je prototip
int BrojClanova(Red *red)
koja će korištenjem postupaka iz reda prebrojati koliko red ima članova. Nakon završetka funkcije ulazni red mora ostati nepromjenjen
Code:
class Red{
private:
struct at {
int element;
struct at *sljed;
};
typedef struct at atom;
atom *ulaz;
atom *izlaz;
public:
Red():ulaz(NULL),izlaz(NULL){}
void Obrisi();
~Red(){
Obrisi();
}
int DodajURed(int element);
int SkiniIzReda(int *element);
};
int Red::DodajURed(int element){
atom *novi;
if (novi = (atom*) malloc (sizeof (atom))) {
novi->element = element;
novi->sljed = NULL;
if (izlaz == NULL) {
izlaz = novi; // ako je red bio prazan
} else {
ulaz->sljed = novi; // inace, stavi na kraj
}
ulaz = novi; // zapamti zadnjeg
return 1;
}
return 0;
}
int Red::SkiniIzReda (int *element) {
atom *stari;
if (izlaz) { // ako red nije prazan
*element = izlaz->element; // element koji se skida
stari = izlaz; // zapamti trenutni izlaz
izlaz = izlaz->sljed; // novi izlaz
free (stari); // oslobodi memoriju skinutog
if (izlaz == NULL) ulaz = NULL; // prazan red
return 1;
}
return 0;
}
void Red::Obrisi(){
while(izlaz!=NULL){
atom *temp = izlaz;
izlaz = izlaz->sljed;
free(temp);
}
ulaz = NULL;
}
class Red{
private:
struct at {
int element;
struct at *sljed;
};
typedef struct at atom;
atom *ulaz;
atom *izlaz;
public:
Red():ulaz(NULL),izlaz(NULL){}
void Obrisi();
~Red(){
Obrisi();
}
int DodajURed(int element);
int SkiniIzReda(int *element);
};
int Red::DodajURed(int element){
atom *novi;
if (novi = (atom*) malloc (sizeof (atom))) {
novi->element = element;
novi->sljed = NULL;
if (izlaz == NULL) {
izlaz = novi; // ako je red bio prazan
} else {
ulaz->sljed = novi; // inace, stavi na kraj
}
ulaz = novi; // zapamti zadnjeg
return 1;
}
return 0;
}
int Red::SkiniIzReda (int *element) {
atom *stari;
if (izlaz) { // ako red nije prazan
*element = izlaz->element; // element koji se skida
stari = izlaz; // zapamti trenutni izlaz
izlaz = izlaz->sljed; // novi izlaz
free (stari); // oslobodi memoriju skinutog
if (izlaz == NULL) ulaz = NULL; // prazan red
return 1;
}
return 0;
}
void Red::Obrisi(){
while(izlaz!=NULL){
atom *temp = izlaz;
izlaz = izlaz->sljed;
free(temp);
}
ulaz = NULL;
}
E sad.. ima li netko ideju kako to pobrojati?
tnx
Of all the things I have lost I miss my mind the most...