Professional Documents
Culture Documents
Dynamic
Dynamic
1. [Initialize] Q AVAIL
2. [End of list?] P Next(Q); If P = NULL return(NULL).
3. [Check size.] if Size(P) N goto 4 else Q P; goto 2.
4. [Reserve block.] K Size(P) – N.
if K = 0 Next(Q) Next(P) else Size(P) K;
Return(P+K).
Improvements
In step 4, if K < c (small constant) return block of size N +
K.
1. [Initialize.] Q AVAIL.
2. [Advance P.] P Next(Q).
if P = NULL or P > P0 goto 3 else Q P and repeat.
3. [Check upper bound.]
if P0 + N = P and P NULL
N N + Size(P); Next(P0) Next(P)
else Next(P0) P.
4. [Check lower bound.]
if Q + Size(Q) = P0
Size(Q) Size(Q) + N; Link(Q) Link(P0)
else Link(Q) Po; Size(P0) N.
A B C C B A B B B C B B