C语言 在链表中插入和删除节点



我正在学习C中的结构,关于我的代码有两个问题:

1)为什么在insert()方法中显示这些错误?:

|44|error: incompatible types when returning type 'void *' but 'ListNode' was expected|
|47|error: incompatible types when returning type 'struct Node *' but 'ListNode' was expected|

 if(current -> next == NULL){
            printf("The node was not found!");
            return NULL; //<<<<<-----------------SHOWS ERROR HERE Line #44
 }

return newNode; //Line #47 

2)我已经为delete()节点编写了代码,但感觉代码可能有些错误。我如何通过C中的main()方法测试/运行程序:)?

3)如何在printList()方法中打印任何类型的变量?

很抱歉问这些新手问题!谢谢!

注意:程序可以接受任何数据类型,head*是一个虚拟节点!

1)您需要将NULL转换为正确的返回类型。所以,return (ListNode *) NULL

您可能希望将该函数的返回类型更改为ListNode *。如果你真的想返回struct,那么返回NULL将不起作用,所以你需要返回一个空的ListNode struct

2)要测试delete是否工作,创建一个非平凡链表,打印内容,调用delete(),并再次打印内容以确保节点确实被删除。

如果在更新指针时出了问题,你可能会在某个地方得到一个空指针,并且无法正确地遍历列表。

3)首先,printf在您的情况下应该接受两个参数:more info。第一个是格式字符串,它基本上告诉它类型,第二个是实际的变量。

你需要知道你想要打印什么类型。您需要将void *data强制转换为正确的指针,然后解引用。C没有办法知道你想要什么。

printf("%dn", *(int *)mydata);

相关内容

  • 没有找到相关文章

最新更新