gpt4 book ai didi

c - 如何链接具有不同结构的链表

转载 作者:行者123 更新时间:2023-11-30 14:20:13 24 4
gpt4 key购买 nike

我有 2 个不同的结构

    typedef struct name {

char*markerName;
struct test *next;

}name_t;

typedef struct test {

int grade;
int studentNumber;
struct test *next;


}test_t;

还有这个函数

void test(name_t* marker1,int data)
{
test_t *temp= malloc(sizeof(test_t));
test_t *location=NULL;
temp->grade=data;
temp->next=NULL;
location=marker1->next;
if(location==NULL)
{
// printf("%i \n",temp->grade);
marker1->next=temp;
}
else
{
while(location!=NULL)
{
printf("%i \n",location->grade);
printf("%p \n",location->next);
location=location->next;
}
location=temp;
}
}

问题是我们正在创建一个结构名称数组,并在数组的每个元素之后创建一个测试的链接列表。如何将结构名称的节点链接到结构测试中?

我打印了下一个,它们一直指向 NULL 指针。

最佳答案

严格来说,链表只能包含一种数据类型。如果您想要一个包含两种结构类型的列表,您可以使用 union 来模拟:

struct name {
char* markerName;
};

struct test {
int grade;
int studentNumber;
};

// Indicates the type of data stored in the union
enum dtype { NONE, NAME, TEST };

// Combination of the above structures, suitable for a mixed-type list
struct combo {
struct combo* next; // Next structure in the linked list
enum dtype type; // Indicates which of the union fields is valid
union {
struct name name;
struct test test;
};
};

这会将两组数据存储在一个结构中,允许您从结构中创建列表,并使您能够跟踪当前有效的数据类型。

关于c - 如何链接具有不同结构的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com