我想在 C/C++ 中创建一个通用链表(不使用 C++ 模板)。我已经编写了以下简单程序,到目前为止它工作正常 -
typedef struct node
{
void *data;
node *next;
}node;
int main()
{
node *head = new node();
int *intdata = new int();
double *doubledata = new double();
char *str = "a";
*doubledata = 44.55;
*intdata = 10;
head->data = intdata;
node *node2 = new node();
node2->data = doubledata;
head->next = node2;
node *node3 = new node();
node3->data = str;
node3->next = NULL;
node2->next = node3;
node *temp = head;
if(temp != NULL)
{
cout<<*(int *)(temp->data)<<"\t";
temp = temp->next;
}
if(temp != NULL)
{
cout<<*(double *)(temp->data)<<"\t";
temp = temp->next;
}
if(temp != NULL)
{
cout<<*(char *)(temp->data)<<"\t";
temp = temp->next;
}
return 0;
}
我的问题是 - 我需要知道我在上面的代码中打印的数据的数据类型。例如 - 第一个节点是 int 所以我写了 - *(int *)(temp->data) 第二个是 double 等等......相反,有没有任何通用的方法可以简单地显示数据而不用担心数据类型?
我知道您可以使用模板来实现这一点,但是如果我必须只在 C 中这样做呢?
谢谢, 凯达