#1 2011-11-06 15:18:05

michal8m

Administrator

Zarejestrowany: 2011-02-03
Posty: 45
Punktów :   

LISTY JEDNOLIERUNKOWE

struct elem {
    int dane;
    elem *nast;
};

struct elemW {
    int expo;
    int coef;
    elemW* nast;
};


//rozwiazanie do testowania

void azim(elem* &lis, int dana) {
    elem* pam = lis;
    if (lis == NULL) {
        lis = new elem;
        lis->dane = dana;
        lis->nast = NULL;
    } else {
        while (lis->nast != NULL) {
            lis = lis->nast;
        }
        elem* n = new elem;
        n->dane = dana;
        n->nast = NULL;
        lis->nast = n;
        lis = pam;
    }
}


//rozwiazanie do testowania

void azimW(elemW* &lis, int wyk, int a) {
    elemW* pam = lis;
    if (lis == NULL) {
        lis = new elemW;
        lis->expo = wyk;
        lis->coef = a;
        lis->nast = NULL;
    } else {
        while (lis->nast != NULL) {
            lis = lis->nast;
        }
        elemW* n = new elemW;
        n->expo = wyk;
        n->coef = a;
        n->nast = NULL;
        lis->nast = n;
        lis = pam;
    }
}

void insert(int x, int i, elem *&lista) {
    elem* e = new elem;
    e->dane = x;
    elem* wsk = lista;
    if (wsk != NULL) {
        for (int j = 0; j < i - 1; j++) {
            wsk = wsk->nast;
        }
        e->nast = wsk->nast;
        wsk->nast = e;
    } else {
        cout << "b" << endl;
    }
}

int remove(int i, elem *&lista) {
    elem* d;
    elem* wsk = lista;
    if (wsk != NULL) {
        for (int j = 0; j < i - 2; j++) {
            wsk = wsk->nast;
        }
        d = wsk->nast;
        wsk->nast = wsk->nast->nast;
    } else {
        cout << "b" << endl;
    }

    delete d;
}

int read(int i, elem* lista) {
    elem* wsk = lista;
    if (wsk != NULL) {
        for (int j = 0; j < i; j++) {
            wsk = wsk->nast;
        }
        return wsk->dane;
    }
}

int size(elem* lista) {
    int liosc = 0;
    while (lista != NULL) {
        lista = lista->nast;
        liosc++;
    }

    return liosc;
}

void print(elem *lista) {
    while (lista != NULL) {
        cout << lista->dane << endl;
        lista = lista->nast;
    }
}

void printW(elemW* lista) {
    while (lista != NULL) {
        cout << "Wyk: " << lista->expo << endl;
        cout << lista->coef << endl;
        lista = lista->nast;
    }
}

elem* UNION(elem* L1, elem* L2) {
    elem* tym = L1;
    while (tym->nast != NULL) {
        tym = tym->nast;
    }
    tym->nast = L2;
    return L1;
}

elem* search(int x, elem *lista) {
    while (lista != NULL) {
        if (lista->dane == x) {
            return lista;
        }
        lista = lista->nast;
    }
    return NULL;
}

void destroy(elem *&lista) {
    elem*tym;
    while (lista != NULL) {
        tym = lista;
        lista = lista->nast;
        delete tym;
    }
}

elem* MIN(elem *lista) {
    elem* min = NULL;
    int wmin = 32100; //zminic na zakres int
    while (lista != NULL) {
        if (wmin > lista->dane) {
            wmin = lista->dane;
            min = lista;
        }
        lista = lista->nast;
    }
    return min;
}

void rev(elem* &lista) {
    if (lista != NULL) {
        elem* zap = lista;
        elem* tym;
        lista = lista->nast;
        zap->nast = NULL;
        while (lista->nast != NULL) {
            tym = lista;
            lista = lista->nast;
            tym->nast = zap;
            zap = tym;
        }
        lista->nast = zap;
    }
}

elemW* polyadd(elemW* w1, elemW* w2) {
    elemW* w = NULL;
    while (w1 != NULL && w2 != NULL) {
        if (w1->expo == w2->expo) {
            azimW(w, w1->expo, w1->coef + w2->coef);
            w1 = w1->nast;
            w2 = w2->nast;
        } else {
            if (w1->expo > w2->expo) {
                azimW(w, w1->expo, w1->coef);
                w1 = w1->nast;
            } else {
                azimW(w, w2->expo, w2->coef);
                w2 = w2->nast;
            }
        }
    }
    while (w1 != NULL) {
        azimW(w, w1->expo, w1->coef);
        w1 = w1->nast;
    }
    while (w2 != NULL) {
        azimW(w, w2->expo, w2->coef);
        w2 = w2->nast;
    }
    return w;
}

void Fareya(int n) {
    ulamek* pocz = new ulamek;
    pocz->licz = 0;
    pocz->mian = 1;
    pocz->nast = NULL;
    if (n > 0) {
        ulamek* tym = new ulamek;
        pocz->nast = tym;
        tym->licz = 1;
        tym->mian = 1;
        tym->nast = NULL;
        bool powt = true;
        ulamek* t = NULL;
        while (powt) {
            powt = false;
            tym = pocz;
            while (tym->nast != NULL) {
                if (tym->mian + tym->nast->mian <= n) {
                    powt = true;
                    t = new ulamek;
                    t->licz = tym->licz + tym->nast->licz;
                    t->mian = tym->mian + tym->nast->mian;
                    t->nast = tym->nast;
                    tym->nast = t;
                }
                tym = tym->nast;
            }
        }
    }
    while (pocz) {
        cout << pocz->licz << "/" << pocz->mian << endl;
        pocz = pocz->nast;
    }
}

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
Producent szamb betonowych i innych wellness ciechocinek cennik