[问题] Linked list incompatible pointer type

楼主: jeffchen106 (超哥)   2021-09-17 19:53:42
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
https://www.onlinegdb.com/online_c_compiler
问题(Question):
这个code主要是可以动态输入资料并且创建出Linked list, 并且还能够排序好.
这段code跑起来没有问题, 能够成功. 但不知道为什么在上面提到的编译器编译
时一直出现多行warning: incompatible pointer size. 举其中两例如下:
newNodePtr->NextPtr = Headnode;
CurrentPtr = CurrentPtr->NextPtr;
希望能有热心的高手指点我一下,非常谢谢
错误结果(Wrong Output):
撷取部分:
main.c:33:29: warning: assignment from incompatible pointer type
[-Wincompatible-pointer-types]
main.c:40:20: warning: assignment from incompatible pointer type
[-Wincompatible-pointer-types]
main.c:44:29: warning: assignment from incompatible pointer type
[-Wincompatible-pointer-types]
main.c:45:30: warning: assignment from incompatible pointer type
[-Wincompatible-pointer-types]
main.c:50:29: warning: assignment from incompatible pointer type
[-Wincompatible-pointer-types]
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
// Online C compiler to run C program online
#include <stdio.h>
#include
<stdlib.h>
typedef struct node
{
int data;
int *NextPtr;
}Node;
Node *Headnode;
void insert_node(int element)
{
Node *PreviousPtr;
Node *CurrentPtr;
Node *newNodePtr = malloc(sizeof(Node));
Node *tempNode;
if(newNodePtr == NULL)
{
printf("Not enough space!");
return;
}
newNodePtr->data = element;
newNodePtr->NextPtr = NULL;
CurrentPtr = Headnode;
if(Headnode == NULL)
{
Headnode = newNodePtr;
return;
}
if(element < Headnode->data)
{
newNodePtr->NextPtr = Headnode;
Headnode = newNodePtr;
return;
}
while((element > (CurrentPtr->data)) && ((CurrentPtr->NextPtr) != NULL))
{
PreviousPtr = CurrentPtr;
CurrentPtr = CurrentPtr->NextPtr;
}
if(CurrentPtr->data > element)
{
newNodePtr->NextPtr = CurrentPtr;
PreviousPtr->NextPtr = newNodePtr;
}
else
{
newNodePtr->NextPtr = CurrentPtr->NextPtr;
CurrentPtr->NextPtr = newNodePtr;
}
return;
}
void Print_node()
{
Node *Currentnode;
Currentnode = Headnode;
printf(" %d
作者: j0958322080 (Tidus)   2021-09-17 20:29:00
看起来是你的 next 型别那边有问题
作者: gusion   2021-09-17 20:29:00
你的NextPtr是指到int,应该要指到struct node才对
楼主: jeffchen106 (超哥)   2021-09-18 07:16:00
对不起不是很懂>< 像第33行报warning的那边,NextPtr指到的是Headnode,那应该也算是指到struct node啊?
作者: pponywong (pony)   2021-09-18 08:54:00
int* NextPtr; 改成 struct node* NextPtr;
作者: sarafciel (Cattuz)   2021-09-18 08:55:00
你把月饼塞进巧克力蛋糕的纸盒拿去送人 就定义上来说
作者: pponywong (pony)   2021-09-18 08:55:00
这个用法是 struct 里面宣告 struct pointer type
作者: sarafciel (Cattuz)   2021-09-18 08:56:00
你还是送了月饼没错 但人家会疑惑怎么用巧克力蛋糕的外盒也是很合理的呀
作者: wawi2 (@@)   2021-09-18 09:33:00
用dummy head可以解决你code里的一堆NULL check
楼主: jeffchen106 (超哥)   2021-09-18 15:31:00
感谢各位!我放进月饼盒之后果然warning解除了!

Links booklink

Contact Us: admin [ a t ] ucptt.com