一个简化的问题示例
链表的难点在于必须复制链表处理函数来处理不同的对象,即便逻辑是完全相同的。例如:
两个结构类似的链表
struct Struct_Object_A
{
int a;
int b;
Struct_Object_A *next;
} OBJECT_A;
typedef struct Struct_Object_B
{
int a;
int b;
int c;
Struct_Object_B *next;
} OBJECT_B;
上面定义的两个结构只有很小的一点差别。OBJECT_B
和 OBJECT_A 之间只差一个整型
变量。但是,在编译器看来,它们仍然是非常不同的。必须为存储在链表中的每个对象复
制用来添加、删除和搜索链表的函数。为了解决这个问题,可以使用具有全部三个变量的
一个联合或结构,其中整数 c 并不是在所有的情况下都要使用。这可能变得非常复杂,并
会形成不良的编程风格。
C 代码解决方案:虚拟链表