这是头文件中的代码:
typedef struct Human {
char name[50];
char surname[50];
struct Human *mother;
struct Human *father;
struct Human *next;
} Human;
void addHuman(List *list, char *name, char *surname, Human *father, Human *mother);
Human *findHuman(List *list, char *name, char *surname);
字符串
下面的代码是从源文件,它不工作:
void addHuman(List *list, char *name, char *surname, Human *father, Human *mother);
// Check if the list is NULL
if (list == NULL) {
printf("Error: List is NULL\n");
return;
}
// Check if the person already exists in the list
Human *existingHuman = findHuman(list, name, surname);
if (existingHuman != NULL) {
printf("Person exists already.\n");
return;
}
// Create new person
Human *new = (Human *) malloc(sizeof(Human));
strcpy(new->name, name); //strcpy:copy strings
strcpy(new->surname, surname);
new->mother = mother;
new->father = father;
型
我怎么才能修好它?
谢谢你的帮助!
我试着检查全局变量和局部变量是否匹配。
2条答案
按热度按时间6vl6ewon1#
要检查某个人(或某个元素)是否在链表中,你必须遍历链表,并将每个元素与你要查找的内容进行比较。下面是如何在C中做到这一点:
字符串
您可以在代码中调用此personalists函数来检查链接列表中是否存在人员:
型
如果addHuman函数在源文件中不起作用,则应该使用此函数(包含建议):
型
qvsjd97n2#
我还为您的问题提供了一个可能的解决方案,并且与最初提交的答案类似。基本前提是设置某种类型的初始“Human”结构,然后在创建新条目时通读列表。由于没有最低代码,这给了我一点艺术许可证来提供一个代码集,以供思考。以下是原型代码。
字符串
以下是需要注意的几点。
下面是一个简单的终端测试来说明初始结构列表的创建(有一个母亲和一个父亲)。当然,这可以用不同的方式来完成,但确实得到了一个初始列表。
型
最后,这个原型还需要进一步完善,但它应该为构建链表以及遍历链表提供思考的食物。另一个收获是可能深入研究一些“C”教程,因为它们与链表,字符串,指针和循环有关。