【发布时间】:2015-10-29 05:10:54
【问题描述】:
为什么我在insertNode() 中收到此警告:
warning: assignment from incompatible pointer type [enabled by default]|
在这一行:
head->next = newNode; //point head's next to the newNode
和
warning: initialization from incompatible pointer type [enabled by default]|
在这一行:
Node *current = head->next;
在我的main() 函数中,我也有这个警告:
warning: passing argument 1 of 'insertNode' from incompatible pointer type [enabled by default]|
在这一行:
insertNode(&head, num);
我的代码中有许多与这些警告类似的其他警告。我该如何修复它们?
typedef struct NodeStruct{
int data;
struct Node *next;
}Node;
void insertNode(Node *head, int data){
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
if(head->next == NULL){
head->next = newNode;
newNode->next = NULL;
}
else{
Node *current = head->next;
while(current != NULL && current->data < data){
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
}
int main(int argc, char *argv[])
{
Node *head = malloc(sizeof(NodeStruct));
head->next = null;
insert(head, 22);
insert(head, 55);
insert(head, 44);
insert(head, 2);
insert(head, 2112);
insert(head, 3);
printList(head);
return 0;
}
【问题讨论】:
-
你能显示结构定义吗?还有
insertNode(&head, num);->insertNode(head, num); -
@haris,为什么
head应该没有&? -
因为
head是指向Node的指针,这就是您在insertNode(Node *head, int data)中收到的内容 -
@Haris,我该如何修复不兼容的类型?
-
我认为其他警告是因为我在上面指出的一个错误。请更正并检查一次。