[英]Inserting and deleting a node in linked list
我正在学习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("%d\n", *(int *)mydata);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.