注册 登录
编程论坛 数据结构与算法

帮忙修改一个"List.h"以实现对任意数据类型的支持。

sxzjw 发布于 2010-06-23 23:07, 762 次点击
照书上编写好“List。h”。千辛万苦修改,才把它改对。
没想到最后书上给了一个问题,要就修改list.h以使得对任意数据类型的支持。

压缩包里有三个list.h,分别是对“char、int、struct”的支持。但怎么实现对任意的支持呢?
大家有没有什么好的思路?请教一个~
包里面的18-1,18-2,18-3都是测试程序,分别用list.h、lis2t.h、list3.h库函数编译。仁兄们帮忙看看。
 
只有本站会员才能查看附件,请 登录
3 回复
#2
sxzjw2010-06-24 12:37
怎么没有人帮下忙啊?我真的想不出来了。。
#3
hnliji11072010-06-24 14:31
你可以把类型那一块定义成共用体啊,把所有你想到的变量类型都可以放到里面去
typedef struct data
{
    char ch;
    struct data *next;   
}stdata;

typedef struct node{
    union
    {
        char cdata;
        int idata;
        stdata *sdata
    }data
    struct node *next;
}ChainNode;

假如有:ChainNode *chNode;

这样通过引用chNode->data.cdata、chNode->data.idata、chNode->data.sdata->ch、chNode->data.sdata->next就可以使用任何变量了
注意,共用体中的变量一次只能使用一个。因为其中的变量是公用一块内存的。

[ 本帖最后由 hnliji1107 于 2010-6-24 14:35 编辑 ]
#4
sxzjw2010-06-24 23:14
楼上的方法不错啊~只要在list.h中定义就可以了。
试了一试,好用。
可是如果任意呢?不用预先存储什么数据类型,而是在测试函数m.c定义数据类型,并使list.h正确编译。这个怎么弄啊?
1