AIUTO C++: LISTA DA SUDDIVIDERE

di il
1 risposte

AIUTO C++: LISTA DA SUDDIVIDERE

E' la prima volta che posto qualcosa su un forum quindi se ho commesso degli errori chiedo scusa in anticipo.

Mi è richiesto di suddividere una lista in altre due in base agli elementi pari e quelli dispari, strutture dati richieste : Lista concatenata con record e puntatori.
Quando eseguo il codice non ci sono errori (mi dice soltanto che l1 e l2 vengono utilizzate ma non dichiarate) tuttavia mi stampa solamente la lista di partenza.

Posto di seguente il codice:
#include <iostream>
#include <cstdlib>
using namespace std;

struct elemento
{ 
    int valore;
    elemento* succ;
};
typedef elemento* pelem;

pelem CreaLista();
void SuddividiLista(pelem p,pelem p1,pelem p2);
void StampaLista(pelem p);
int main()
{
    cout<<"Programma che suddivide lista in due liste per posizione pari e posizione dispari degli elementi."<<endl;
    pelem l=CreaLista();
    StampaLista(l);
    pelem l1,l2;
    SuddividiLista(l,l1,l2);
    cout<<"La lista dei pari e':"<<endl;
    StampaLista(l1);
    cout<<"La lista dei dispari e':"<<endl;
    StampaLista(l2);

    system("PAUSE");
    return 0;
}
pelem CreaLista()
{
      int n;
      pelem p=new elemento;
      cout<<"numero elementi lista";
      cin>>n;
      cout<<"valore "<<1<<" = ";
      cin>>p->valore;
      pelem p1=p;
      for (int i=1;i<n;i++)
      {
            p1->succ=new elemento;
            p1=p1->succ;
            cout<<"valore "<<i+1<<" = ";
            cin>>p1->valore;
      }
      p1->succ=NULL;
      return p;
}
void StampaLista(pelem p)
{
      while (p!=NULL)
      {
            cout<<p->valore<<" ";
            p=p->succ;
      }
}
void SuddividiLista(pelem p,pelem p1,pelem p2)
{
    pelem paux=p;
    pelem pauxd=new elemento;
    pauxd->succ=p;
    p=pauxd;
    pelem pauxp=new elemento;
    pauxp->succ=p->succ;
    p->succ=pauxp;
    p1=NULL;p2=NULL;

    int i=0;

    while(paux!=NULL)
    {
        i++;
        paux=paux->succ;
    }
    {
        {if (i%2==0)

            pauxp=new elemento;
            pauxp=pauxp->succ;
            pauxp->valore=paux->valore;
            paux=paux->succ;
        }

        {if (i%2==1)

            pauxd=new elemento;
            pauxd=pauxd->succ;
            paux->valore=pauxd->valore;
            paux=paux->succ;
        }

    }

StampaLista(p1);
StampaLista(p2);

}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte