作业帮8.9面试

编程:分配内存

6 10

new 5

new 4

new 1

del 

new 3

def 

输出分配的块号

public class Main{
    static class obj{
        int lable;
        int flag;
        int num;
        public obj(int lable,int flag,int num) {
            this.flag=flag;
            this.lable=lable;
            this.num=num;
        }
    }
    public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
         int n=sc.nextInt();
         int m=sc.nextInt();
         CopyOnWriteArrayList<obj> list=new CopyOnWriteArrayList<>();
         obj o=new obj(1,0,m);
         list.add(o);
         int item=1;
         for(int i=0;i<n;i++) {
             String str=sc.next();    
             int res=0;
             if(str.equals("new")) {                
                 int z=sc.nextInt();                 
                 for(obj j:list) {
                     if(j.flag==0&&j.num>=z) {    
                         res=item;                                                                                                   
                         obj temp=new obj(item+1,0,j.num-z);
                         j.flag=1;j.num=z;
                         list.add(temp);
                         item++;
                     }                     
                 }        
                 if(res==0)
                     System.out.println("NULL");
                 else
                     System.out.println(res);
                }
           else if(str.equals("del")) {    
               int z=sc.nextInt();
               for(obj j:list) {                   
                     if(j.lable==z) {                                                 
                         j.flag=0;
                     }                     
                }              
           }else if(str.equals("def")) {
               list.clear();
               list.add(new obj(1,0,m));
           }
         }
    }    
}

 

posted @ 2019-08-09 20:16  LeeJuly  阅读(143)  评论(0)    收藏  举报