mihaispr
Administrator
 Inregistrat: acum 18 ani
Postari: 2142
|
|
//Adaugare unei inregistrari dupa inregistrarea cu x=val(val e citit de la tastatura)
#include<stdio.h> #include<conio.h> //directiva pt.clrscr() si getch() din prog.principal void main() #include<iostream.h> //directiva pt.afisarea nu cu printf ci cu cout<<"Mesaj:"<<variabila #include<alloc.h> //directiva ce foloseste functiile de alocare new si dealocare delete struct nod { int x; struct nod* next; }*l;
int n,i,val;
struct nod* creare() { struct nod* aux; int v; l=NULL; for(i=n;i>=1;i--) { aux= (struct nod* )malloc(sizeof(struct nod)); printf("valoarea nodului %d=",i); scanf("%d",&v); aux->x=v; aux->next=l; l=aux; } return l; }
void afisare() { struct nod* c; printf("lista este" ); if (!l) printf("vida" ); else { c=l; while (c) { printf("%3d",c->x); c=c->next; } } }
void adaugare() {struct nod* c,*q; //c este o copie a listei c=l; while((c) &&(c->x!=val)) //cat timp nu s-a terminat lista si c->x!=val; != (diferit) c=c->next;//se trece la urmatoarea inregistrare if(!c) cout<<"nu exista inregistrarea cautata:";//daca lista s-a terminat afiseaza mesaj else //altfel adauga o inregistrare intre c si c->next {q=new nod; //secventa de inserare a inregistrari q intre c si c->next cin>>q->x; q->next=c->next; c->next=q; } }
void main(void) { clrscr(); printf ("nr de noduri este:" ); scanf("%d",&n); printf("valoarea este:" ); scanf(%d",&val); l=creare(); afisare(); adaugare(); afisare(); getch(); }
|
|