Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: prb cu liste simplu inlantuite  (Citit de 5176 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
cr1st18
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« : Octombrie 02, 2009, 18:37:00 »

nu stiu ce gresesc la prb asta....
prb: se da o lista .Sa se creeze 2 liste .Una cu elementele pare si alta cu cele impare a listei initiale.

Cod:
#include<iostream.h>
#include<conio.h>



struct nod{int info;
  nod* adr;};


void sterge(nod* &first,nod* p){//fctia are ca parametrii first= adresa primului nod dintr-o lista si un pointer p=contine  
                                              adresa nodului precedent celui care va fi sters(am scris first de tip referinta ca poate se modifica
                                              adresa primului nod)
nod* a;

if(p==NULL)
{a=first;
first=first->adr;
delete a;
}
else
{a=p->adr;
p->adr=a->adr;
delete a;}}


nod* parimpar(nod* &first){//aici impart cele 2 liste .Elementele pare le tin in lista asta ,modific firstu daca ii cazu ,iar elem. impare
                                     //le bag intr-o lista noua

nod* p,*firstq,*q;
p=first;
firstq=NULL;
if(p->info%2)               //verific daca nu cumva lista incepe cu val impare(pe care o sa le bag intr-o lista noua si le sterg din lista
                                //initiala; s-ar putea sa se modifice first-u listei cu elem pare.
while(p->info%2){
q=new nod;
q->info=p->info;
q->adr=firstq;
firstq=q;
sterge(first,NULL);
p=first;}

while(p->adr!=NULL){    //parcurg lista mai departe...daca gasesc elem pare trec mai departe,altfel cred un nou nod in lista cu
                                //elemente impare si sterg elem impar din lista initiala(care va fi cea cu elem pare)
if(p->adr->info%2==0)
p=p->adr;
else
{
q=new nod;
q->info=p->adr->info;
q->adr=firstq;
firstq=q;
sterge(first,p);}
}

return firstq;}


nod *a,*b;
int n;

void main(){
clrscr();

cin>>n;
a=gen(n);
b=parimpar(a);
cout<<"primu sir  ";
afisare(a);
cout<<endl;
afisare(b);
« Ultima modificare: Octombrie 03, 2009, 15:09:01 de către cristi » Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #1 : Octombrie 02, 2009, 18:50:37 »

Cred că ai avea mai mari șansele să te ajute lumea dacă ai descrie puțin soluția ta, decât să pui o sursă (din care eu unul nu am reușit să citesc mai mult de 5 rânduri intrucât nu este identată, ceea ce o face imposibil de urmărit).
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #2 : Octombrie 02, 2009, 19:22:23 »

Iti lipsesc functiile gen si afisare ... sau ele is problema ?
Memorat
cr1st18
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #3 : Octombrie 02, 2009, 20:35:08 »

alea nu-s prb....probabil am copiat si main-u din greseala....functia de generare a unei liste imi merge...da asta parimpar nu...
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #4 : Octombrie 03, 2009, 07:06:54 »

alea nu-s prb....probabil am copiat si main-u din greseala....functia de generare a unei liste imi merge...da asta parimpar nu...
Mie imi merge perfect, care ii problema ?
Memorat
cr1st18
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« Răspunde #5 : Octombrie 03, 2009, 11:43:59 »

pt 4 elemente: 1 1 2 2 ===>lista cu elem pare: 1 2 2 si lista cu elem impare 1


.....am gasit greseala.......acuma merge.....multumesc oricum peacefingers
« Ultima modificare: Octombrie 03, 2009, 15:08:26 de către cristi » Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #6 : Octombrie 03, 2009, 14:14:33 »

nu afiseaza de fiecare data ce trebuie ....ma mai uit sa caut greseala...
Da-mi un exemplu pentru care nu merge, i-am dat cateva teste si a mers  Think
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines