工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1451|回复: 6

[原创]请教关于c语言的问题

[复制链接]
发表于 2005-6-5 00:01 | 显示全部楼层 |阅读模式
#include <stdio.h>
#define OK 1
#define ERROR 0
#define NULL 0
#define FootLoc(p)  p+p->size-1


typedef struct word
{
        union
        {
                word *llink;
                word *uplink;
               
        };
        int tag;
        int size;
        word *rlink;
}word,head,foot,*space;



space allocboundtag(word *L,space *pav,int n,int e)
{//
        word *p;
        word *f;
        char c[10];
        for(p=*pav;p&&p->size<n&&p->rlink!=*pav;p=p->rlink)//查找不小于n的空闲块
                if(!p||p->size<n) return NULL;//找不到,返回空指针
                else
                {//P指向找到的空闲块
                        f=FootLoc(p);//指向底部
                        *pav=p->rlink;//pav指向*p结点的后继结点
                        if(p->size-n<=e)
                        {//整块分配,不保留<=e的量
                                if(*pav==p)  pav=NULL;//可利用空间为空表
                                else
                                {//在表中删除分配的结点
                                        pav->llink=p->llink;
                                        p->llink->rlink=*pav;
                                }
                                p->tag=f->tag=1;//修改分配结点的头部和底部标志
                        }
                        else
                        {//分配该块的后n个字
                                f->tag=1;//修改分配块的底部标志
                                p->size-=n;//置块大小
                                f=FootLoc(p);//指向块底部
                                f->tag=0;  f->uplink=p;//设置块底部
                                p=f+1;//指向分配块头部
                                p->tag=1;  p->size=n;//设置分配块头部
                        }
                        return p;//返回分配块首地址
                }
}




void free(word *L,space *pav,int n)
{
        word *p;
        word *q;
        word *f;
        p->tag=0;
        f->uplink=p;
    f->tag=0;
        if(!pav) *pav=p->llink=p->rlink=p;
        else
        {
                q=pav->llink;
                p->rlink=*pav;
                p->llink=q;
                q->rlink=pav->llink=p;
                *pav=p;
        }
}
这个程序有什么问题呢?
发表于 2005-6-6 00:23 | 显示全部楼层
呢个问题,可唔可以先把你要实现的功能说一说,这样看程序真的很痛苦,虽然你有写注释。
回复

使用道具 举报

 楼主| 发表于 2005-6-7 13:16 | 显示全部楼层
我想通过它来调整内存的存储空间
回复

使用道具 举报

发表于 2005-6-8 12:54 | 显示全部楼层
不明。。。呵呵。
回复

使用道具 举报

 楼主| 发表于 2005-6-8 22:32 | 显示全部楼层
我也不知道怎么说。或者说是改变结构数组的存储空间的分布吧。
回复

使用道具 举报

发表于 2005-6-23 18:15 | 显示全部楼层
厉害,这都想得出来
回复

使用道具 举报

发表于 2005-6-26 15:15 | 显示全部楼层
main()呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-6-5 06:28

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表