Să se scrie o funcție C++ care determină suma elementelor impare dintr-o lista simplu înlănțuită care sunt situate între două elemente pare.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
struct nod
{
int info;
nod* urm;
};
int sumaImpare(nod *p)
{
if (p==NULL || p->urm==NULL || p->urm->urm==NULL) return 0;
else
{
int s=0;
nod *q=p, *r=p->urm, *t=r->urm;
if ((q->info)%2==0 && (t->info)%2==0 && (r->info)%2) s+=r->info;
while (t->urm != NULL)
{
q=q->urm; r=r->urm; t=t->urm;
if ((q->info)%2==0 && (t->info)%2==0 && (r->info)%2) s+=r->info;
}
return s;
}
}
void creareLista(nod *&Cap)
{
int i,inf,n;
nod *p, *q;
Cap=NULL;
cout<<"Dati numarul de elemente al listei n = ";cin>>n;
cout<<"Dati prima informatie ";cin>>inf;
p=new nod;
p->info=inf;
p->urm=NULL;
Cap=p; q=p;
for(i=2;i<=n;i++)
{
cout<<"Dati informatia "<<i<<" = ";
cin>>inf;
p=new nod;
p->info=inf;
p->urm=NULL;
q->urm=p;
q=p;
}
}
void afisare(nod *Cap)
{
nod *p=Cap;
while (p != NULL)
{
cout << p->info << " ";
p = p->urm;
}
cout << "\n";
}
int main()
{
nod *Cap=NULL;
creareLista(Cap);
afisare(Cap);
cout << "Suma imparelor intre pare = " << sumaImpare(Cap);
}
Explicație:
am plasat tot codul, nu numai functia solicitată sumaImpare. Dacă ea trebuie să se numească altfel, o redenumeşti...