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