If a linked list is doubly linked, then deleting a block pointed to by bp takes constant time:
after = NEXT_FREE(bp); before = PREV_FREE(bp); PUT_NEXT(before, after); PUT_PREV(after, before);
We would need to write the four macros:
- NEXT_FREE
- PREV_FREE
- PUT_NEXT
- PUT_PREV