Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void elibereaza(Lista *L, int a, int m)
- {
- Nod *q, *p;
- p=(Nod*)malloc(sizeof(Nod));
- for (q=L->prim; q; q=q->succ)
- {
- if (( q->poz + q->lung <=a) || (a+m <= q->poz )); else
- if (q==L->prim && q->poz>=a && q->poz + q->lung <=a+m)
- {
- p = L->prim;
- L->prim = q->succ;
- free(p);
- }
- if (q==L->ultim && q->poz>=a && q->poz + q->lung <=a+m)
- {
- p->succ = NULL;
- free(L->ultim);
- L->ultim = p;
- } else
- if (q->poz>=a && q->poz + q->lung <=a+m)
- {
- p->succ = q->succ;
- free(q);
- q=p;
- } else
- if (q->poz>=a && q->poz<a+m)
- {
- q->lung -= a+m - q->poz;
- q->poz = a+m;
- }
- else
- if (q->poz<a && (q->poz)+(q->lung)>a+m)
- {
- p=(Nod*)malloc(sizeof(Nod));
- p->succ = q->succ;
- p->poz = a+m;
- p->lung = q->lung - (a - q->poz) - m;
- q->lung = a - q->poz;
- q->succ = p;
- if (q==L->ultim) L->ultim = p;
- }
- else
- if (q->poz<a && (q->poz)+(q->lung)>a)
- {
- q->lung = a - q->poz;
- }
- p=q;
- }
- }
Add Comment
Please, Sign In to add comment