Algoritumul de mai jos creaza o lista simplu inlantuita, si adauga n elemente in ea.
Certinta problemei este sa se parcurga lista si sa se insereze caraterul p inaintea caracterului q ori de cate ori acesta apare in lista. Am reusit sa inserez q inaintea lui p o data dar nu imi iese algoritmul in asa fel incat sa caute toate nodurile care contin caracterul q. Stie cineva ce modificare ar trebui sa fac ca sa indeplineasca cerinta ?
#include <iostream>
using namespace std ;
struct nod
{ char carcater;
nod* urm;
};
nod *cap , *sf;
void creare_nod ()
{ if (cap==NULL)
{ cap = new nod ;
cout << " Introduceti caracterul primului nod: " ;
cin >> cap ->carcater;
cap->urm=NULL;
sf=cap;
}
else
{
nod *nod_nou;
nod_nou=new nod ;
cout<< " Introduceti valoarea de adaugat in lista: ";
cin >>nod_nou->carcater;
sf->urm=nod_nou ;
sf=nod_nou ;
sf->urm = NULL ;
}
}
void afisare_lista()
{nod *afisare;
afisare= cap ;
while (!afisare ==NULL)
{ cout <<afisare->carcater<<" ";
afisare=afisare->urm;
}
cout<<"\n";
}
void a (int val)
{nod *c ;
c=cap ;
c= new nod ;
cin >> c->carcater;
c->urm=cap ;
cap=c;
}
void inserare_inainte(char val_cautat,char val_introdus)
{
nod *c,*a;
c=cap;
while (c->urm->carcater!=val_cautat&&c)
c=c->urm ;
a= new nod ;
a->carcater=val_introdus ;
a->urm=c->urm;
c->urm=a;
}
int main ()
{ int val=4,nr_noduri;
cout << "Introduceti numarul de noduri: " ;
cin >> nr_noduri ;
for (int i=1;i<=nr_noduri;i++)
creare_nod() ;
afisare_lista();
inserare_inainte('q','p');
afisare_lista() ;
return 0 ;
}
