• 大小: 5KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: Java
  • 标签: java  

资源简介

成组链接法 java 版本,对应文章:https://mp.csdn.net/postedit/80822999

资源截图

代码片段和文件信息

package OS;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


/**
 * @author :hly
 * @date :2018/6/5
 */
public class Groupslinking {
    //可用磁盘快
    static int[][] groupslinking = {{3 1 2 3} {3 4 5 6} {0 0 0 0} {0 0 0 0} {2 0 7 0} {0 0 0 0} {0 0 0 0} {0 0 0 0}};
    //当前空闲块
    static List freeList = new ArrayList() {{
        for (int i = 1; i <= 7; i++) {
            add(i);
        }
    }};

    static Scanner scanner = new Scanner(System.in);

    //分配空闲块
    public static void allocate() {
        //空闲块数分配的盘块号
        int freeNum allocativeNum;
        //当前组盘块大于1块
        if (groupslinking[0][0] > 1) {
            freeNum = groupslinking[0][0];
            allocativeNum = groupslinking[0][freeNum];
            groupslinking[0][0]--;
            freeList.remove((Integer) allocativeNum);
            System.out.println(“分配的块号为:“ + allocativeNum);

        }

        else if (groupslinking[0][0] == 1) {

            if (groupslinking[0][1] != 0) {
                allocativeNum = groupslinking[0][1];
                for (int j = 0; j < groupslinking[allocativeNum].length; j++)
                    //当前组已经分配完,下一组拷贝到当前组
                    groupslinking[0][j] = groupslinking[allocativeNum][j];
                //groupslinking[0][0]--;
                freeList.remove((Integer) allocativeNum);
                System.out.println(“分配的块号为:“ + allocativeNum);

            } else {
                System.out.println(“已经没有空闲块了“);
                return;
            }
        }
        else {
            System.out.println(“当前组已经分配完了“);
        }
        display();
    }

    //回收空闲块
    public static void recycling() {
        int freeNum;
        System.out.println(“请输入你想回收的空闲盘块的盘块号:“);
        int recyclingNum = scanner.nextInt();
        for (int i = 0; i < freeList.size(); i++) {
            if (freeList.get(i) == recyclingNum) {
                System.out.println(“该空闲块已经存在“);
                return;
            }
        }
        //当前组不满3块
        if (groupslinking[0][0] < 3) {
            freeNum = groupslinking[0][0];
            groupslinking[0][++freeNum] = recyclingNum;
            freeList.add(recyclingNum);
            groupslinking[0][0]++;
        } else {
            for (int j = 0; j <= 3;

评论

共有 条评论