4/17/2007
Modern Programming Languages - Chapter 14
36
     if (lag==NULL) { // ours will be first free
      freeStart = addr;
      memory[addr+1] = p;
    }
    else if (lag+memory[lag]==addr) { // block before is
                                   // adjacent to ours
      memory[lag] += memory[addr]; // merge ours into it
      memory[lag+1] = p;
    }
    else { // neither: just a simple insertion
      memory[lag+1] = addr;
      memory[addr+1] = p;
    }
  }
A Java Solution