void afisare(Llin L) { nod *p; if(lung(L)==0) printf("\nLista este vida!!\n\n"); else for(p=L.prim;p!=NULL;p=p->suc) printf("%c ",p->val); }
void npo(Llin L) { nod *p,*q,*r; int i, l=lung(L); Llin aux=L; if(lung(L)%2!=0) { printf("\nNU, lista NU reprezinta un sir de forma dorita!\n"); return; } oglindeste(&aux); for(p=L.prim,q=aux.prim;q!=NULL;p=p->suc,q=q->suc) if(p->val!=q->val) { printf("\nNU, lista NU reprezinta un sir de forma dorita!\n"); return; } printf("\nDA, lista reprezinta un sir de forma dorita!\n"); }
void oglindeste(Llin *pL) { nod *p,*u,*q; char aux; int i,l=lung(*pL); u=pL->ultim; for(i=1,p=pL->prim;i<=n/2;i++,p=p->suc) { for(q=pL->prim;q->suc!=u;q=q->suc); aux=u->val; u->val=p->val; p->val=aux; u=q; } }
int main () { nod *cap; int inf, poz; cap = init(cap); //initializare lista //introducerea elementelor in lista printf("Introduceti noduri in lista. Terminati cu cifra zero.\n"); printf("Introduceti elementul = "); scanf("%d",&inf); while(inf != 0) //introducerea se va incheia cu elementul "0" { cap = adaugaSfarsit(cap,inf); //am ales adaugarea la sfarsit printf("Introduceti elementul = "); scanf("%d", &inf); } afisList(cap); //afisarea componentelor listei printf("\nLista are %d elemente", lung(cap)); //adaugarea unui element prin folosirea optiunii de adaugare la inceput printf("\nIntroduceti un element pentru a-l adauga la inceput: "); scanf("%d", &inf); cap = adaugaInceput(cap, inf); afisList(cap); //afisarea componentelor listei printf("\nLista are %d elemente", lung(cap)); //exemplificarea adaugarii dupa un element dat printf("\nIntroduceti valoarea dupa care doriti sa inserati: ");scanf("%d", &poz); printf("Introduceti un element pentru a-l adauga dupa valoarea %d:",poz); scanf("%d", &inf); cap = adaugaDupaElement(cap, poz, inf); afisList(cap); //afisarea componentelor listei printf("\nLista are %d elemente", lung(cap)); //exemplificarea optiunii de modificare a unei valori din lista printf("\nIntroduceti valoarea pe care doriti sa o modificati: "); scanf("%d", &poz); printf("Introduceti noua valoare: "); scanf("%d", &inf); cap = modify(cap,poz,inf); afisList(cap); //afisarea componentelor listei printf("\nLista are %d elemente", lung(cap)); //stergerea primului element din lista printf("\nVom sterge primul element din lista \n"); cap=stergeInceput(cap); afisList(cap); //afisarea componentelor listei printf("\nLista are %d elemente", lung(cap)); //stergerea elementului de la sfarsitul listei printf("\nVom sterge ultimul element din lista \n"); cap = stergeSfarsit(cap); afisList(cap); printf("\nLista are %d elemente", lung(cap)); //stergerea unei anumite valori din lista printf("\nIntroduceti valoarea pe care doriti sa o stergeti: "); scanf("%d", &inf); cap = stergeElement(cap, inf); afisList(cap); printf("\nLista are %d elemente", lung(cap)); //dealocarea listei printf("\nVom dealoca lista\n"); dealocare(cap); return 0; }
/* come assegna con la differenza che pone il risultato in stringa 3 */ void concatena(stringa s1, stringa s2, stringa s3) { int i=0, j=0; for (j=0; j<lung(s1); i++, j++) s3[i]=s1[j]; for (j=0; j<lung(s2); i++, j++) s3[i]=s2[j]; s3[i]='\0'; }
/* concatena la stringa 2 alla stringa 1 */ void assegna(stringa s1, stringa s2) { int i; for (i=0; i<lung(s2); i++) s1[i] = s2[i]; s1[i]='\0'; }