我是C编程语言的初学者。
我想在内存中读取1 KB的文件块并将其存储在In-Memory HashTable中。为了处理冲突,我在HashTable中为每个桶提供了一个双向链表。
假设我将链表的节点建模为具有next和previous指针的结构。我该如何存储1 KB的文件块?
赞赏任何指示或想法。
答案 0 :(得分:1)
typedef struct struct_FILEBLOCK FILEBLOCK ;
struct struct_FILEBLOCK {
char *data ;
FILEBLOCK *next ;
FILEBLOCK *prev ;
} ;
然后你所有的实际数据块都可能只有1k长,你的列表元素很小。
FILEBLOCK *fballoc(void)
{
FILEBLOCK *fb = malloc(sizeof(FILEBLOCK)) ;
fb->data = malloc(1024) ;
fb->next = 0 ;
fb->prev = 0 ;
return fb ;
}
然后
void fbread(int fh,FBLOCK *fb)
{
read(fh,fb->data,1024) ;
/* whateva */
}