#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 vp(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 vp(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); //L_Delete(L); *L=L1; } //inserare inaintea pozitiei p; void L_Insert(Lista L,int p,void* x){ int i,rez; if(L==NULL) return; rez=vp(L,p); assert(rez); if (L->size==L->dim) ModifDim(2*L->dim,&L); 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(10); elem=(int*)malloc(sizeof(int)); *elem=(int)12; L_Insert(L1,1,elem); L_Insert(L1,2,elem); L_Insert(L1,3,elem); L_Parcurgere(L1); return 0; }