Orar semigroup #2

Orar semigroup #2

5/3

Se citesc numere din fişier într-o stivă. Să se afişeze stiva. Să se împartă stiva în două stive cu nr. egal de elemente. Dacă e nr. impar, să se şteargă elementul din mijloc.

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

void adaug(int x, nod* &vf)
{nod* p;
p=new nod;
p->info=x;
p->urm=vf;
vf=p;}

void afisare(nod* vf)
{while(vf!=NULL){
    cout<<vf->info<<" ";
    vf=vf->urm;}
}

void separare(nod* vf, nod* &vf1)
{nod*p=vf;
int nr=0;
while(p)
{nr++;
p=p->urm;}
if(nr%2==0)
{p=vf;
for(int i=1;i<nr/2;i++)
    p=p->urm;
vf1=p->urm;
p->urm=NULL;}
else {p=vf;
for(int i=1;i<nr/2;i++)
    p=p->urm;
vf1=p->urm->urm;
nod*q=p->urm;
delete q;
p->urm=NULL;}
}

int main()
{nod *q,*vf=NULL,*p,*vf1;
int x,s=0,i=0;
ifstream f("date");
while(f>>x)
    adaug(x,vf);
//afisare(vf);

separare(vf,vf1);
afisare(vf);
cout<<endl;
afisare(vf1);
}

joi, 3 mai 2012 by DlMuresan
Categories: | Leave a comment

Leave a Reply