关于 **c语言** ADT抽象数据类型的不解。
我不解的是在c语言中,如何使用像List ,Queue等数据结构,难道每次用到的时候都要自己实现 List,Queue等的增删的操作,
最近看了一些关于c 的ADT的部分,好像为了通用性, 都会定义一个 typedef YourStruct Item ,然后List Queue 等都针对 Item进行操作,感觉虽然有了点通用性,但是typedef Item 时,已经固定Item的类型了,似乎 在同一个文件不能对不同的类型使用此List 操作。比如,某List 里存放int 型的,另一个list存放float型 。
我想知道的是在实际c 编程时是怎样进行处理的。 。
[解决办法]
我的理解,C语言中不存在模板类的概念,而和模板类比较搭边的类型是void *。因此,我通常将需要使用通用类型的地方,写成void *。比如List结构:
List { void *data; List *next, prev };
如果要对List进行对象比较,则find(List list, key, CompareFunc);其中:
typedef int (*CompareFunc)(void *,void *)
[解决办法]
存地址具有通用性.
[解决办法]
强制类型转换似乎可以解决这个问题。
void* data;
size_t len;
就够了。