如何编写可以将所有结构类型的链表存入文件的函数?
想将链表存入文件,再读入内存形成链表,对于某个类型的链表可以实现,现在我想实现一个函数可以将所有类型的链表存入文件的函数,那么需要将这个链表的结构类型告诉这个函数。如果是C++可以使用重载来完成,但是C里面没有重载,我怎么把结构类型传给函数呢?期待高手解答。
[解决办法]
c++也不能实现吧,即使你写文件可以实现,但读取是肯定没法万全区分的.
如果不怕麻烦可以这样
所有的结构体要这样定义:在结构体的头4个字节存放改结构体的大小,在4个字节存放指向下一个结构体的指
针,再往后存放有效数据,这样,在往文件内写时,读时都可以实现了.
当然,这种方法在读取时如果你的结构体如果大小有相同的时候就会区别不开了.
[解决办法]
应该可以的,定义结构如下:
typedef unsigned char U8;
typedef char S8;
typedef struct A_t A;
typedef struct B_t B;
typedef int (*read_func)(void* data,int len);
typedef int (*write_func)(void* data,int len);
typedef struct i_t
{
int t_size;//totol size
void* data;//stuct data
read_func read_f;//read function
write_func write_f;//write function
}info;
typedef struct A_t
{
int t_size;
int d_size;
U8* data;
A* next;
}A;
typedef struct B_t
{
int t_size;
int d_size;
U8* data1;
U8* data2;
B* next;
}B;
[解决办法]
void *
[解决办法]
struct node {
uint parent;
uint left;
uint right;
uchar payload[1];
};
parent, left, right全部是相对于0的偏移量, paylaod真实的数据
[解决办法]
用回调函数做
C库里有的qsort函数就是这样的
qsort可以对任意的数组类型进行排序,做法就是调用的时候传入一个回调函数。
[解决办法]
长见识了~
MARK!