#include <iostream>
#include <cstdlib>
using namespace std;
struct lista
{
int liczba;
struct lista *nast;
};
struct lista* wstaw_na_koniec(struct lista *p, int l)
{
struct lista *element = new struct lista;
element->liczba = l;
element->nast = NULL;
if (p==NULL) return element;
struct lista *tmp = p;
while(tmp->nast!=NULL) tmp = tmp->nast;
tmp->nast = element;
return p;
};
struct lista* wstaw_na_poczatek(struct lista *p, int l)
{
struct lista *element = new struct lista;
element->liczba = l;
element->nast = p;
return element;
}
struct lista* wstaw(struct lista *p, int l)
{
struct lista *element = new struct lista;
element->liczba = l;
element->nast = NULL;
if(p==NULL) return element;
if(element->liczba < p->liczba)
{
element->nast = p;
return element;
}
struct lista *tmp = p;
while(tmp->nast && (tmp->nast)->liczba<element->liczba)
tmp = tmp->nast;
element->nast = tmp->nast;
tmp->nast = element;
return p;
}
void wypisz(struct lista *p)
{
struct lista *tmp = p;
while(tmp!=NULL)
{
cout<<tmp->liczba<<" ";
tmp = tmp->nast;
}
}
struct lista* usun(struct lista *p, int x)
{
if (!p) return p;
struct lista *tmp, *el;
if (p->liczba == x)
{
tmp = p->nast;
delete p;
p = tmp;
}
tmp = p;
while(tmp->nast && (tmp->nast)->liczba!=x)
tmp = tmp->nast;
if(tmp->nast)
{
el = tmp->nast;
tmp->nast = (tmp->nast)->nast;
delete el;
}
return p;
}
struct lista* usun_wszystkie(struct lista *p, int x)
{
if (!p) return p;
struct lista *tmp, *el;
while (p && p->liczba == x)
{
tmp = p->nast;
delete p;
p = tmp;
}
struct lista *tmp2 = p;
tmp = p;
while(tmp->nast)
{
while(tmp->nast && (tmp->nast)->liczba!=x)
tmp = tmp->nast;
if(tmp->nast)
{
el = tmp->nast;
tmp->nast = (tmp->nast)->nast;
delete el;
}
}
return p;
}
float srednia(struct lista *p)
{
struct lista *tmp = p;
float s = 0;
int n = 0;
if (!tmp) return 0;
while(tmp)
{
s += tmp->liczba;
n++;
tmp = tmp->nast;
}
s /= n;
return s;
}
bool srednia2(struct lista *p, float *s)
{
struct lista *tmp = p;
*s = 0;
int n = 0;
if (!tmp) return false;
while(tmp!=NULL)
{
(*s) += tmp->liczba;
n++;
tmp = tmp->nast;
}
(*s) /= n;
return true;
}
int main()
{
struct lista *pierwszy=NULL;
int x;
for(int i=0; i<20; i++)
pierwszy = wstaw_na_koniec(pierwszy, rand()%10);
wypisz(pierwszy);
cout<<endl;
float sr = 0;
if(srednia2(pierwszy, &sr)) cout<<"srednia = "<<sr<<endl;
//usuwanie pojedynczego elementu
cin>>x;
pierwszy = usun(pierwszy, x);
wypisz(pierwszy);
//usuwanie wszytskich wyst�pie�
cin>>x;
pierwszy = usun_wszystkie(pierwszy, x);
wypisz(pierwszy);
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}