Orar semigroup #2

Orar semigroup #2

Archive for iunie 2012

5/11 - Arbori binari


#include<iostream>
#include<fstream>
using namespace std;
ifstream f("date");
struct nod{int info;
nod* st,*dr;};

nod* creare()
{int x;
f>>x;
if(x)
{nod*p=new nod;
p->info=x;
p->st=creare();
p->dr=creare();
return p;}
else return NULL;}

void RSD(nod* R)
{if(R)
{cout<<R->info;
RSD(R->st);
RSD(R->dr);}

}

void fii(nod* R, int x)
{if(R)
{if(x==R->info)
{if(R->st)
    cout<<R->st->info<<" ";
if(R->dr)
    cout<<R->dr->info<<" ";
}
fii(R->st,x);
fii(R->dr,x);
}
}

int suma(nod* R)
{
    if(R)
        return R->info+suma(R->st)+suma(R->dr);
    else return 0;
}

int main()
{nod* R;
R=creare();
RSD(R);
cout<<endl;
fii(R,3);
cout<<endl;
cout<<suma(R);
}

duminică, 10 iunie 2012 by DlMuresan
Categories: | 1 comment

6/8

#include<iostream>
using namespace std;

struct nod{int info;
nod* st,*dr;};

nod* creare()
{int x;
cin>>x;
if(x)
{nod*p=new nod;
p->info=x;
p->st=creare();
p->dr=creare();
return p;}
else return NULL;}

void RSD(nod* R)
{if(R)
{cout<<R->info;
RSD(R->st);
RSD(R->dr);}
}

int main()
{nod* R;
R=creare();
RSD(R);
}

joi, 7 iunie 2012 by DlMuresan
Categories: , , | Leave a comment

Liste dublu inlantuite

Sa se verifice daca un numar este palindrom (cifre citite de la tastatura/fisier) folosind o lista liniara dublu inlantuita.

#include<iostream>
#include<fstream>
using namespace std;
struct nod{int info;
nod *urm,*ant;};

void adaugare(nod* &ultim,int x)
{nod *p=new nod;
ultim->info=x;
ultim->urm=p;
p->ant=ultim;
p->urm=NULL;
ultim=p;}

void creare(nod* &prim, nod* &ultim)
{prim=new nod;
ultim=new nod;
prim->urm=ultim;
prim->ant=NULL;
ultim->urm=NULL;
ultim->ant=prim;
int x,i;
cin>>x;
while(x)
{i=x%10;
x=x/10;
adaugare(ultim,i);
}
}

void afisare(nod* prim, nod* ultim)
{nod *p=prim->urm;
if(prim->urm==ultim)
    cout<<"Lista vida";
else while(p!=ultim)
    {cout<<p->info<<" ";
    p=p->urm;}
}

int palindrom(nod* prim, nod* ultim)
{nod*p=prim->urm;
nod*q=ultim->ant;
while(q->urm!=p && q!=p)
{if(p->info!=q->info)
    return 0;
p=p->urm;
q=q->ant;
}
return 1;
}

int main()
{int x;
nod *prim,*ultim;
creare(prim,ultim);
afisare(prim,ultim);
if(palindrom(prim,ultim))
    cout<<"DA";
else cout<<"NU";
}

by DlMuresan
Categories: , | Leave a comment