#include #include //ptr malloc #include //ptr assert #include //ptr memcpy struct list{ void** date; int size; int dim; }; typedef struct list *Lista; //FUNCTII Lista L_New(int dimensiune); int Verifpoz(Lista L,int p); void ModifDim(int nouadim,Lista *L); void L_Insert(Lista L,int p,void* x); void L_Parcurgere(Lista L); Lista L_New(int dimensiune){ Lista L; L=(Lista)malloc(sizeof(struct list)); L->dim=dimensiune; L->size=0; L->date=(void**)malloc(L->dim*(sizeof(void*))); return L; } int Verifpoz(Lista L,int p){ assert(L); if ((p<0)||(p>L->size)) return 0; return 1; } void ModifDim(int nouadim,Lista *L){ Lista L1; L1=L_New(nouadim); L1->size=(*L)->size; memcpy(L1->date,(*L)->date,(*L)->size); //L1->dim=nouadim; //L_Delete(L); *L=L1; printf("noua dim ********* %d %d \n",(*L)->size,(*L)->dim); } //inserare inaintea pozitiei p; void L_Insert(Lista L,int p,void* x){ int i; if(L==NULL) return; // assert(VerifPoz(L,p)); if (L->size==L->dim) ModifDim(2*L->dim,&L); printf("noua dim efect %d \n",L->size); for (i=L->size;i>=p;i--) L->date[i]=L->date[i-1]; L->date[p-1]=x; L->size++; } void L_Parcurgere(Lista L){ int i; for (i=1;i<=L->size;i++) printf("%d ",*(int*)L->date[i-1] ); } int main() { Lista L1; int* elem; L1=L_New(2); elem=(int*)malloc(sizeof(int)); *elem=(int)12; L_Insert(L1,1,elem); L_Insert(L1,2,elem); L_Insert(L1,3,elem); L_Insert(L1,4,elem); L_Insert(L1,5,elem); L_Parcurgere(L1); return 0; }