gpt4 book ai didi

c - 在链表中插入和删除节点

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:19 25 4
gpt4 key购买 nike

我正在学习 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 转换为正确的返回类型。因此,返回 (ListNode *) NULL

您可能想将该函数的返回类型更改为 ListNode *。如果您真的想返回 struct,则返回 NULL 将不起作用,因此您需要返回一个空的 ListNode struct

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

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

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

您需要知道要打印什么类型。您需要将 void *data 转换为正确的指针,然后取消引用。 C 无法知道你想要什么。

printf("%d\n", *(int *)mydata);

关于c - 在链表中插入和删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33204257/

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