⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adjust.c

📁 模拟内存分配的c语言实现 六、 实验目的 了解用户程序分配内存以及回收所用内存的过程
💻 C
字号:
void adjust(BLOCK *h,BLOCK *p)
{
        BLOCK *s,*k,*t;
        int flag=0,figure=0;
        s=h->next;
        while(s && p)
        {
                if(s->endaddress+1==p->startaddress)
                {
                        s->endaddress=p->endaddress;
                        s->length+=p->length;
                        for(k=h;k;k=k->next)
                                if(k->next==p)
                                	break;
                        k->next=p->next;
                        free(p);
                        p=s->next;
                        flag=1;
                        if(!p)
                        	break;
                }
                else
                {
                        s=s->next;
                }
        }
        if(flag)
        {
                s=p;
                p=h;
                while(p->next!=s)
                        p=p->next;
        }
        k=h;
        while(k->next!=p)
        {
                k=k->next;
        }

        for(s=h;s;s=s->next)
        {
                if(s==p||!p||!s->next)
                        continue;
                if(s!=h && s->next==p && s->length>p->length)
                {
                        for(t=h;t;t=t->next)
                	{
                                if(t->next==s)
                                	break;
                	}
                        s->next=p->next;
                        p->next=s;
                        t->next=p;
                        figure=1;
                        break;
                }
                if(s->next->length>p->length)
                {
                        k->next=p->next;
                        p->next=s->next;
                        s->next=p;
                        figure=1;
                        break;
                }
        }
        if(p&&p->next&&h->next&&!figure&&((!s&&h->next!=p)||(h->next==p&&p->next))&&p->length>=p->next->length)
        {
                t=h;
                while(t->next)
                        t=t->next;
                k->next=p->next;
                t->next=p;
                p->next=NULL;
        }
        figure=0;
}

⌨️ 快捷键说明

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