| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 375 人关注过本帖
标题:Extend Buffer结构图
只看楼主 加入收藏
一切皆安
Rank: 2
等 级:论坛游民
帖 子:70
专家分:46
注 册:2011-4-2
结帖率:91.67%
收藏
 问题点数:0 回复次数:0 
Extend Buffer结构图
图片附件: 游客没有浏览图片的权限,请 登录注册


说明:
(1)    n:1byte,表示该ExtendBuffer的大小为2n byte。

(2)    block:有效的存储数据的数据块。

(3)    free block:该区域中没有存储任何数据的块

(4)    block info:为各block的信息,固定长度4byte表示。格式为:usedflg/offset/size/key
usedflg:1bit, 表示该block是否被使用。
offset: 19bit,表示该block在extend buffer中的offset,即
offset = 该block的起始地址 - extend buffer的首地址。
size: 8bit,表示该block的字节数(是空间的大小,未必是所存数据的长度)。
Key: 4bit,表示该block中的数据所属的key值。

(5)    free block info:为free block的信息,4byte表示。格式为:offset/size
offset: 2byte表示,offset = extend buffer的末尾地址 - free block的起始地址
size: 2byte,表示free block的字节数。

(6)    block中存放的有效数据的长度在其它地方已有记录,在本题中无需考虑。


2. 要求
请用C++创建一个ExtendBuffer类如下:
class ExtendBuffer{
public:
    ExtendBuffer(int size = 256);

    int InsertBlock(int *pData, int pSize, int pKey);
    /* 向ExtendBuffer中插入特定Key值,特定大小的数据。
该Key值的数据在ExtendBuffer中一定不存在。
待插入的数据由pData表示,其所占字节数由pSize表示。 */

    int DeleteBlock (int pKey);
    /* 从ExtendBuffer中删除特定Key值的数据。
该Key值的数据在ExtendBuffer中一定存在。
只需将该数据对应的block info中的usedflg置为false即可。 */

    int UpdateBlock (int pKey, int * pData, int pSize);
    /* 更新ExtendBuffer中特定Key值的数据。
该Key值的数据在ExtendBuffer中一定存在。
更新的数据及长度由pData和pSize表示。 */

}




这道题怎么做呢?????
搜索更多相关主题的帖子: 结构图 
2011-06-23 21:13
快速回复:Extend Buffer结构图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025945 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved