memory.java

来自「java版的数据结构的完全代码 免费提供了 学习数据结构的请下载」· Java 代码 · 共 85 行

JAVA
85
字号
// Introduced in Chapter 16/** * A simulated memory for illustrating memory management.  Each * object takes up two cells. */public class Memory {  /** Number of cells in memory. */  public static final int MEMORY_SIZE = 1000;    /** The null reference. */  public static final int NULL = -1;    /** Address of the beginning of the free list. */  private int free;    /** Data are stored in these locations. */  private int[] heap;  /** Create the heap. */  public Memory() {    heap = new int[MEMORY_SIZE];    for (int i = 0; i < heap.length; i += 2) {      set(i + 1, i + 2);    }    set(heap.length - 1, NULL);    free = 0;  }  /**   * Return the address of an available object, which is remove from   * the free list.   */  public int allocate() {    int result = free;    free = get(free + 1);    return result;  }  /** Put the object at address back on the free list. */  public void free(int address) {    set(address + 1, free);    free = address;  }  /** Free the linked list starting at address. */  public void freeList(int address) {    while (address != NULL) {      int next = get(address + 1);      free(address);      address = next;    }  }  /** Free the tree rooted at address. */  public void freeTree(int address) {    if (address > NULL) {      freeTree(get(address));      freeTree(get(address + 1));      free(address);    }  }  public void garbageCollect() {  }    /** Return the contents of address. */  public int get(int address) {    return heap[address];  }  /** Set the contents of address to value. */  public void set(int address, int value) {    heap[address] = value;  }  /** Swap the data at addresses x and y. */  public void swap(int x, int y) {    int temp = get(x);    set(x, y);    set(y, temp);  }  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?