Advertisement
a53

FInserareKX

a53
May 25th, 2022
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. void FInserareKX(Nod * &head,int k,int x)
  2. {
  3. Nod *p;
  4. if(head==NULL) /// Daca lista e vida
  5. p=new Nod,p->info=x,p->leg=NULL,head=p; /// Pun valoarea x in lista
  6. else
  7. {
  8. if(k<2) /// Daca e 1 sau mai mic decat 1
  9. p=new Nod,p->info=x,p->leg=head,head=p; /// adaug nodul in fata (aici lista nu era vida)
  10. else /// k>1
  11. {
  12. int nr_nod=1;
  13. p=head; /// p indica primul nod in lista
  14. Nod *ultim=head,*q;
  15. while(p!=NULL)
  16. {
  17. ++nr_nod;
  18. if(k==nr_nod) /// Daca am ajuns pe pozitia k
  19. {
  20. q=new Nod,q->info=x;
  21. if(p->leg==NULL) /// Daca nodul p este ultimul
  22. p->leg=q,q->leg=NULL; /// sdaugam acest ultim nod in lista
  23. else /// iar daca p nu e ultimul
  24. q->leg=p->leg,p->leg=q; /// sdaugam nodul in interiorul listei
  25. }
  26. ultim=p,p=p->leg; /// Memoram adresa ultimului nod si mergem la urmatorul nod din lista
  27. }
  28. if(k>nr_nod) /// Daca k depaseste numarul de noduri ale listei
  29. q=new Nod,q->info=x,ultim->leg=q,q->leg=NULL; /// sdaugam acest ultim nod in lista
  30. }
  31. }
  32. }
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement