Informatică, întrebare adresată de vorotnaandriana01, 9 ani în urmă

Creați listă liniară din n numere întregi introduse de la tastatură. Să se formeze a doua
listă care conține elementele distincte din listă dată, împreună cu frecvența lor de
apariție. urgent va rog!!

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

using namespace std;

struct nod

{

   int info;

   nod* urm;

};

nod *p, *Cap=NULL;

struct nodAp

{

   int nr,ap;

   nodAp* urm;

};

nodAp *prim=NULL;

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

}

void CreareLista2(nodAp *&prim, nod *Cap)

{

   nodAp *q, *r;

   q=new nodAp;

   q->nr=Cap->info;

   q->ap=0;

   q->urm=NULL;

   prim=q;

   nod *p=Cap;

   while (p!=NULL)

   {

       q=prim;

       while (q->nr!=p->info && q->urm!=NULL)

       {

           q=q->urm;

       }

       if (q->nr==p->info) ++q->ap;

       else

       {

           r=new nodAp;

           r->nr=p->info;

           r->ap=1;

           q->urm=r;

           q=r;

       }

       p=p->urm;

   }

}

void afisareLista2(nodAp *prim)

{

   nodAp *q=prim;

   while (q != NULL)

   {

       cout << "(" << q->nr << "," << q->ap << ")  ";

       q=q->urm;

   }

}

int main()

{

   creareLista(Cap);

   afisare(Cap);

   CreareLista2(prim,Cap);

   afisareLista2(prim);

}

Explicație:


boiustef: Lista2 am afişat-o ca perechi (numarul,apariţii)
Alte întrebări interesante