#include <cstdio> struct pereche{ int a,b; //alaturare de doi int};struct lista{ int info; lista *next; //alaturare de int si pointer} *prim; //pointer catre un primul element dintr-o lista noua, global, deci are valoarea 0 void parcurgere(lista *pointer){ printf("%d ",(*pointer).info); //folosind * ne ducem in memorie la structura, apoi luam primul camp cu . //printf("%d ",pointer->info); //alternativ, sintaxa cu -> ne permite acelasi lucru if ((*pointer).next!=NULL) parcurgere(pointer->next); //parcurgere((*pointer).next); //parcurgere((&(*pointer))->next); //parcurgere((*(&(*pointer))).next); //....} void insert_at_begin(int x){ lista *new_lista= new lista; //alocare spatiu printf("am creat un nou element la adresa %X \n",new_lista); new_lista->info=x; //atribuire camp1 cu int printf("am pus %d in campul de info \n",x); new_lista->next=prim; //atribuire camp2 cu lista* printf("am pus %X in campul de next \n",prim); prim=new_lista; // atribuire prim cu lista* printf("prim devine %X \n\n",prim);} int main(){ pereche T,U,V; T.a=4; T.b=6; printf("\n%d %d",T.a,T.b); printf("\n &T: %X",&T); printf("\n &U: %X",&U); printf("\n &V: %X",&V); printf("\n\n &T.a: %X",&T.a); printf("\n &T.b: %X",&T.b); printf("\n\n &U.a: %X",&U.a); printf("\n &U.b: %X",&U.b); printf("\n\n &V.a: %X",&V.a); printf("\n &V.b: %X",&V.b); printf("\n"); lista L,M,N; L.info=1; L.next=&M; M.info=2; M.next=&N; N.info=3; N.next=NULL; parcurgere(&L); printf("\n"); insert_at_begin(7); insert_at_begin(8); insert_at_begin(9); parcurgere(prim); return 0;}