Orar semigroup #2

Orar semigroup #2

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";
}

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

Leave a Reply